** Description changed:

+ [SRU]
+ [Impact]
+ 
+ The "drivedb.h" file is the smartmontools drive database file used to
+ perform the scan actions. This file can be updated through update-smart-
+ drivedb command, but debsums may complain about drive.h in the form of a
+ false negative verification of the smartmontool packae being raised. In
+ addition, if the smartmontool package is upgraded, the "drivedb.h" file
+ is overwritten, therefore data will be lost.
+ 
+ The worst scenario would be that a drive model is included in a
+ "drivedb.h" update at some point, and later the smartmontool package
+ update downgrades the drive.h version, making smartmontools scans
+ unavailable. It's true that it can be recovered through an update-smart-
+ drivedb action, but the user might not be aware of it.
+ 
+ The fix applied here is picked up from upstream and it is present since
+ version 7.2-1, therefore Ubuntu series starting at Impish and later are
+ not affected. What this fix does is that it corrects the current
+ shipping system of "drivedb.h", as well as avoiding an unconditional
+ replacement of "drivedb.h".
+ 
+ [Test Plan]
+ 
+ This test plan is for Focal, but applies to Bionic in the same way.
+ 
+ 0.Preparing the test environment:
+ 
+ #Preparing the container
+ lxc launch images:ubuntu/focal focal 
+ lxc shell focal
+ apt update -y
+ apt upgrade -y
+ 
+ #Installing necessary tools
+ 
+ apt install -y smartmontools gpg debsums wget
+ 
+ 0.1 Preparing scenario:
+ 
+ #At this point, debsums always gives all OK for the package:
+ 
+ root@focal:~# debsums smartmontools
+ /lib/systemd/system/smartmontools.service                                     
OK
+ /usr/sbin/smartctl                                                            
OK
+ /usr/sbin/smartd                                                              
OK
+ /usr/sbin/update-smart-drivedb                                                
OK
+ /usr/share/bug/smartmontools/presubj                                          
OK
+ /usr/share/doc/smartmontools/AUTHORS                                          
OK
+ /usr/share/doc/smartmontools/ChangeLog-6.0-7.0.gz                             
OK
+ /usr/share/doc/smartmontools/NEWS.Debian.gz                                   
OK
+ /usr/share/doc/smartmontools/NEWS.gz                                          
OK
+ /usr/share/doc/smartmontools/README                                           
OK
+ /usr/share/doc/smartmontools/README.Debian                                    
OK
+ /usr/share/doc/smartmontools/badblockhowto.html                               
OK
+ /usr/share/doc/smartmontools/changelog.Debian.gz                              
OK
+ /usr/share/doc/smartmontools/copyright                                        
OK
+ /usr/share/doc/smartmontools/examples/Example1                                
OK
+ /usr/share/doc/smartmontools/examples/Example2                                
OK
+ /usr/share/doc/smartmontools/examples/Example3                                
OK
+ /usr/share/doc/smartmontools/examples/Example4                                
OK
+ /usr/share/doc/smartmontools/examples/Example5                                
OK
+ /usr/share/doc/smartmontools/examples/Example6                                
OK
+ /usr/share/doc/smartmontools/examples/Example7                                
OK
+ /usr/share/doc/smartmontools/examples/Example8                                
OK
+ /usr/share/doc/smartmontools/examples/README                                  
OK
+ /usr/share/doc/smartmontools/smartd.conf.gz                                   
OK
+ /usr/share/lintian/overrides/smartmontools                                    
OK
+ /usr/share/man/man5/smartd.conf.5.gz                                          
OK
+ /usr/share/man/man8/smartctl.8.gz                                             
OK
+ /usr/share/man/man8/smartd.8.gz                                               
OK
+ /usr/share/man/man8/update-smart-drivedb.8.gz                                 
OK
+ /usr/share/smartmontools/smartd-runner                                        
OK
+ /usr/share/smartmontools/smartd_warning.sh                                    
OK
+ /var/lib/smartmontools/drivedb/drivedb.h                                      
OK
+ 
+ #Perform an update of the drivedb.h:
+ 
+ root@focal:~# update-smart-drivedb
+ /var/lib/smartmontools/drivedb/drivedb.h updated from 
branches/RELEASE_7_0_DRIVEDB
+ 
+ 1. Bad cases:
+ 
+ root@focal:~# debsums smartmontools | grep drivedb.h
+ /var/lib/smartmontools/drivedb/drivedb.h                                  
FAILED
+ 
+ 2. Good cases:
+ 
+ # special attention on the new location of the file
+ 
+ root@focal:~# debsums smartmontools | grep drivedb.h
+ /usr/share/smartmontools/drivedb.h                                            
OK
+ 
+ 
+ [Where problems could occur]
+ 
+ At the end, the file is still used from the /var/lib location, so the
+ logic of smartmontools for using the file remains the same. But, if the
+ user alters the file or it gets corrupted (bad upgrading), a new
+ installation wouldn't be a solution.
+ 
+ [Other Info]
+ 
+ The fix applied here is picked up from upstream
+ (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=976696#30) available
+ since version 7.2-1 (https://bugs.debian.org/cgi-
+ bin/bugreport.cgi?bug=976696#30).
+ 
+ 
+ [Original Report]
+ 
+ -------------------------------------------------------------------------
+ 
  The update-smart-drivedb command overwrites
  /var/lib/smartmontools/drivedb/drivedb.h which is a file installed by
  the package. This means that reinstalling or upgrading the package from
  a SRU may downgrade the drivedb. In general it's something packages
  shouldn't do. After running update-smart-drivedb on Groovy `debsums
  smartmontools` report that the package has a corrupted file:
  
  /var/lib/smartmontools/drivedb/drivedb.h            FAILED
  
  The smartctl(8) manpage says that
  
-   If /var/lib/smartmontools/drivedb/drivedb.h is
-   present, the contents of this file is used instead
-   of the built in table.
+   If /var/lib/smartmontools/drivedb/drivedb.h is
+   present, the contents of this file is used instead
+   of the built in table.
  
  So I think we should:
  
  1. Make sure the built-in table is up-to-date with drivedb.h. I suppose
  that file gets #included in the code when building, so this should be
  the case.
  
  2. Stop installing /var/lib/smartmontools/drivedb/drivedb.h and leave it
  in full control of update-smart-drivedb.

** Description changed:

  [SRU]
  [Impact]
  
  The "drivedb.h" file is the smartmontools drive database file used to
  perform the scan actions. This file can be updated through update-smart-
  drivedb command, but debsums may complain about drive.h in the form of a
  false negative verification of the smartmontool packae being raised. In
  addition, if the smartmontool package is upgraded, the "drivedb.h" file
  is overwritten, therefore data will be lost.
  
  The worst scenario would be that a drive model is included in a
  "drivedb.h" update at some point, and later the smartmontool package
  update downgrades the drive.h version, making smartmontools scans
  unavailable. It's true that it can be recovered through an update-smart-
  drivedb action, but the user might not be aware of it.
  
  The fix applied here is picked up from upstream and it is present since
  version 7.2-1, therefore Ubuntu series starting at Impish and later are
  not affected. What this fix does is that it corrects the current
  shipping system of "drivedb.h", as well as avoiding an unconditional
  replacement of "drivedb.h".
  
  [Test Plan]
  
  This test plan is for Focal, but applies to Bionic in the same way.
  
  0.Preparing the test environment:
  
  #Preparing the container
- lxc launch images:ubuntu/focal focal 
+ lxc launch images:ubuntu/focal focal
  lxc shell focal
  apt update -y
  apt upgrade -y
  
  #Installing necessary tools
  
  apt install -y smartmontools gpg debsums wget
  
  0.1 Preparing scenario:
  
  #At this point, debsums always gives all OK for the package:
  
  root@focal:~# debsums smartmontools
  /lib/systemd/system/smartmontools.service                                     
OK
  /usr/sbin/smartctl                                                            
OK
  /usr/sbin/smartd                                                              
OK
  /usr/sbin/update-smart-drivedb                                                
OK
  /usr/share/bug/smartmontools/presubj                                          
OK
  /usr/share/doc/smartmontools/AUTHORS                                          
OK
  /usr/share/doc/smartmontools/ChangeLog-6.0-7.0.gz                             
OK
  /usr/share/doc/smartmontools/NEWS.Debian.gz                                   
OK
  /usr/share/doc/smartmontools/NEWS.gz                                          
OK
  /usr/share/doc/smartmontools/README                                           
OK
  /usr/share/doc/smartmontools/README.Debian                                    
OK
  /usr/share/doc/smartmontools/badblockhowto.html                               
OK
  /usr/share/doc/smartmontools/changelog.Debian.gz                              
OK
  /usr/share/doc/smartmontools/copyright                                        
OK
  /usr/share/doc/smartmontools/examples/Example1                                
OK
  /usr/share/doc/smartmontools/examples/Example2                                
OK
  /usr/share/doc/smartmontools/examples/Example3                                
OK
  /usr/share/doc/smartmontools/examples/Example4                                
OK
  /usr/share/doc/smartmontools/examples/Example5                                
OK
  /usr/share/doc/smartmontools/examples/Example6                                
OK
  /usr/share/doc/smartmontools/examples/Example7                                
OK
  /usr/share/doc/smartmontools/examples/Example8                                
OK
  /usr/share/doc/smartmontools/examples/README                                  
OK
  /usr/share/doc/smartmontools/smartd.conf.gz                                   
OK
  /usr/share/lintian/overrides/smartmontools                                    
OK
  /usr/share/man/man5/smartd.conf.5.gz                                          
OK
  /usr/share/man/man8/smartctl.8.gz                                             
OK
  /usr/share/man/man8/smartd.8.gz                                               
OK
  /usr/share/man/man8/update-smart-drivedb.8.gz                                 
OK
  /usr/share/smartmontools/smartd-runner                                        
OK
  /usr/share/smartmontools/smartd_warning.sh                                    
OK
  /var/lib/smartmontools/drivedb/drivedb.h                                      
OK
  
  #Perform an update of the drivedb.h:
  
  root@focal:~# update-smart-drivedb
  /var/lib/smartmontools/drivedb/drivedb.h updated from 
branches/RELEASE_7_0_DRIVEDB
  
  1. Bad cases:
  
  root@focal:~# debsums smartmontools | grep drivedb.h
  /var/lib/smartmontools/drivedb/drivedb.h                                  
FAILED
  
  2. Good cases:
  
  # special attention on the new location of the file
  
  root@focal:~# debsums smartmontools | grep drivedb.h
  /usr/share/smartmontools/drivedb.h                                            
OK
  
- 
  [Where problems could occur]
  
- At the end, the file is still used from the /var/lib location, so the
- logic of smartmontools for using the file remains the same. But, if the
- user alters the file or it gets corrupted (bad upgrading), a new
+ In the end, the file is still used from the /var/lib location, so the
+ smartmontools logic for using the file remains the same. But, if the
+ user alters the file or it gets corrupted (bad update), a new
  installation wouldn't be a solution.
  
  [Other Info]
  
  The fix applied here is picked up from upstream
  (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=976696#30) available
  since version 7.2-1 (https://bugs.debian.org/cgi-
  bin/bugreport.cgi?bug=976696#30).
- 
  
  [Original Report]
  
  -------------------------------------------------------------------------
  
  The update-smart-drivedb command overwrites
  /var/lib/smartmontools/drivedb/drivedb.h which is a file installed by
  the package. This means that reinstalling or upgrading the package from
  a SRU may downgrade the drivedb. In general it's something packages
  shouldn't do. After running update-smart-drivedb on Groovy `debsums
  smartmontools` report that the package has a corrupted file:
  
  /var/lib/smartmontools/drivedb/drivedb.h            FAILED
  
  The smartctl(8) manpage says that
  
    If /var/lib/smartmontools/drivedb/drivedb.h is
    present, the contents of this file is used instead
    of the built in table.
  
  So I think we should:
  
  1. Make sure the built-in table is up-to-date with drivedb.h. I suppose
  that file gets #included in the code when building, so this should be
  the case.
  
  2. Stop installing /var/lib/smartmontools/drivedb/drivedb.h and leave it
  in full control of update-smart-drivedb.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1893202

Title:
  update-smart-drivedb overwrites package installed file

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/smartmontools/+bug/1893202/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to