[Opendnssec-develop] [OpenDNSSEC] #133: Issues with SOA serial "keep" mode

OpenDNSSEC owner-dnssec-trac at kirei.se
Wed May 12 17:45:47 UTC 2010


#133: Issues with SOA serial "keep" mode
---------------------------------------------------+------------------------
Reporter:  Anirban Mukherjee <amukherj@…>          |       Owner:  matthijs
    Type:  defect                                  |      Status:  new     
Priority:  major                                   |   Component:  Signer  
 Version:  trunk                                   |    Keywords:          
---------------------------------------------------+------------------------
 1) If a sign zone is issued without an increment to the serial number, the
 error message is of the form "Cannot keep input serial(<x>), output serial
 is too large" and not "Serial setting is set to 'keep', but input serial
 has not increased" as one would ideally expect.

 This seems to be due to the fact that negative and zero return values from
 compare_serial are being treated equivalently by perform_action in
 signer/signer_engine/Zone.py and both result in the first error message.

 2) When the zone is being signed the very first time '''and''' the serial
 number in the unsigned file is greater than {{{2^31-1}}}, the same error
 message ""Cannot keep input serial(<x>), output serial 0 is too large" is
 seen and the signing is aborted.

 I think this is caused by the fact that a .serial file is still not
 present in the working directory (default /var/opendnssec/tmp) and
 get_output_serial in Zone.py returns zero when a .serial file is not
 present. In sequence number arithmetic , zero is greater than any
 x>{{{2^31-1}}}. So compare_serial reports that the output serial of zero
 is larger than the input serial x from the unsigned file.
 A crude way to work around this is to make compare_serial say that any
 serial number is greater than a serial number of zero. But then zero
 cannot be used as a valid serial number.

 I have attached a modified Zone.py.modif and Zone.py.orig whose diff may
 be used to explain the above. There might be other places like find_serial
 that need to be considered similarly.

-- 
Ticket URL: <http://trac.opendnssec.org/ticket/133>
OpenDNSSEC <http://www.opendnssec.org/>
OpenDNSSEC


More information about the Opendnssec-develop mailing list