From a70e7720e8b718db7d393660ff80388d6d05c16e Mon Sep 17 00:00:00 2001
From: samm2 <samm2@4ea69e1a-61f1-4043-bf83-b5c94c648137>
Date: Sun, 20 Dec 2009 23:26:23 +0000
Subject: [PATCH] FreeBSD: fixing bug #29

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

diff --git a/smartmontools/CHANGELOG b/smartmontools/CHANGELOG
index 9237d9ee0..64b69d811 100644
--- a/smartmontools/CHANGELOG
+++ b/smartmontools/CHANGELOG
@@ -43,6 +43,8 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE>
 
+  [AS] FreeBSD: fixing crash on kFreeBSD (#29), patch provided by Petr Salinger
+
   [CF] Makefile.am: 'make check' now tests the syntax of drivedb.h.
 
   [CF] Cygwin: Open drive database files in text mode.
diff --git a/smartmontools/os_freebsd.cpp b/smartmontools/os_freebsd.cpp
index e7af98960..a439b3d23 100644
--- a/smartmontools/os_freebsd.cpp
+++ b/smartmontools/os_freebsd.cpp
@@ -165,7 +165,7 @@ private:
 #ifdef __GLIBC__
 static inline void * reallocf(void *ptr, size_t size) {
    void *rv = realloc(ptr, size);
-   if(rv == NULL)
+   if((rv == NULL) && (size != 0))
      free(ptr);
    return rv;
    }
@@ -1800,10 +1800,10 @@ smart_device * freebsd_smart_interface::autodetect_smart_device(const char * nam
           cam_close_device(cam_dev);
           if(usbdevlist(bus,vendor_id, product_id, version)){
             const char * usbtype = get_usb_dev_type_by_id(vendor_id, product_id, version);
-            if (!usbtype)
-              return false;
-            return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
+            if (usbtype)
+              return get_sat_device(usbtype, new freebsd_scsi_device(this, name, ""));
           }
+          return false;
         }
 #if FREEBSDVER > 800100
         // check if we have ATA device connected to CAM (ada)
-- 
GitLab