From 88ff05a0d2da80666b66db2c6dc977802924e659 Mon Sep 17 00:00:00 2001
From: chrfranke <chrfranke@4ea69e1a-61f1-4043-bf83-b5c94c648137>
Date: Tue, 17 Apr 2007 21:10:59 +0000
Subject: [PATCH] Fixed smartd crash on missing '-s' directive argument

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@2397 4ea69e1a-61f1-4043-bf83-b5c94c648137
---
 sm5/CHANGELOG  | 4 +++-
 sm5/smartd.cpp | 8 ++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index b457c6a29..1282ad089 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.609 2007/04/03 18:23:27 shattered Exp $
+$Id: CHANGELOG,v 1.610 2007/04/17 21:10:59 chrfranke Exp $
 
 The most recent version of this file is:
 http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup
@@ -33,6 +33,8 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE>
 
+  [CF] Fixed smartd crash on missing '-s' directive argument.
+
   [SS] Support CCISS on FreeBSD (kernel source is required).
 
   [DG] SCSI/TAPE: some IBM tape drives don't react properly to a LOG
diff --git a/sm5/smartd.cpp b/sm5/smartd.cpp
index bf0ad2091..fd5097d6e 100644
--- a/sm5/smartd.cpp
+++ b/sm5/smartd.cpp
@@ -119,14 +119,14 @@ extern "C" int getdomainname(char *, int); // no declaration in header files!
 extern const char *atacmdnames_c_cvsid, *atacmds_c_cvsid, *ataprint_c_cvsid, *escalade_c_cvsid, 
                   *knowndrives_c_cvsid, *os_XXXX_c_cvsid, *scsicmds_c_cvsid, *utility_c_cvsid;
 
-static const char *filenameandversion="$Id: smartd.cpp,v 1.387 2007/02/26 19:53:59 dpgilbert Exp $";
+static const char *filenameandversion="$Id: smartd.cpp,v 1.388 2007/04/17 21:10:59 chrfranke Exp $";
 #ifdef NEED_SOLARIS_ATA_CODE
 extern const char *os_solaris_ata_s_cvsid;
 #endif
 #ifdef _WIN32
 extern const char *daemon_win32_c_cvsid, *hostname_win32_c_cvsid, *syslog_win32_c_cvsid;
 #endif
-const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.387 2007/02/26 19:53:59 dpgilbert Exp $" 
+const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.388 2007/04/17 21:10:59 chrfranke Exp $" 
 ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID
 #ifdef DAEMON_WIN32_H_CVSID
 DAEMON_WIN32_H_CVSID
@@ -1100,7 +1100,7 @@ void PrintHead(){
 #else
   const char * ver = SMARTMONTOOLS_BUILD_HOST;
 #endif
-  PrintOut(LOG_INFO,"smartd version %s [%s] Copyright (C) 2002-6 Bruce Allen\n", PACKAGE_VERSION, ver);
+  PrintOut(LOG_INFO,"smartd version %s [%s] Copyright (C) 2002-7 Bruce Allen\n", PACKAGE_VERSION, ver);
   PrintOut(LOG_INFO,"Home page is " PACKAGE_HOMEPAGE "\n\n");
   return;
 }
@@ -3205,7 +3205,7 @@ int ParseToken(char *token,cfgfile *cfg){
     // Do a bit of sanity checking and warn user if we think that
     // their regexp is "strange". User probably confused about shell
     // glob(3) syntax versus regular expression syntax regexp(7).
-    if ((int)strlen(arg) != (val=strspn(arg,"0123456789/.-+*|()?^$[]SLCO")))
+    else if ((int)strlen(arg) != (val=strspn(arg,"0123456789/.-+*|()?^$[]SLCO")))
       PrintOut(LOG_INFO,  "File %s line %d (drive %s): warning, character %d (%c) looks odd in extended regular expression %s\n",
                configfile, lineno, name, val+1, arg[val], arg);
     break;
-- 
GitLab