| libvirt / libvirt | 
            
            
              | 
                   v5.10.0-rc2 | 
            
            
              | 
                  
                    | 
                       40 mins and 59 secs |  
                    | 
                        
                           Michal Privoznik |  
                    | nss: Don't fail on empty files
 Before we rewrote nss plugin so that it doesn't use libvirt's
 internal functions it used virLeaseReadCustomLeaseFile() to parse
 .status files. After the rewrite it's using read() + yajl_parse()
 + yajl_complete_parse(). There's one catch though,
 virLeaseReadCustomLeaseFile() skipped over empty files.
 
 An empty .status file is created when a network is started. This
 is because we configure dnsmasq to use our leasehelper. So the
 first thing it does it calls it as follows:
 
 DNSMASQ_INTERFACE=virbr0 /usr/libexec/libvirt_leaseshelper init
 
 which causes the leasehelper to create empty virbr0.status file.
 If there is only one libvirt network then that is no problem -
 there are no other .status files to parse anyway. But if there
 are two or more networks then the first empty .status file causes
 whole parsing process and subsequently the whole name lookup
 process to fail.
 
 Fixes: v5.7.0-rc1~343
 
 Reported-by: Pavel Hrdina <phrdina@redhat.com>
 Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
 Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
 |  |