]> andersk Git - test.git/commitdiff
Check for null pointers from gethostbyname_r() to prevent seg faults.
authorJay Weisskopf <jay@jayschwa.net>
Wed, 4 Jan 2012 09:06:53 +0000 (03:06 -0600)
committerJay Weisskopf <jay@jayschwa.net>
Wed, 4 Jan 2012 09:34:52 +0000 (03:34 -0600)
libhttp/ssl.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index aec3e0b..8e3ae02
@@ -672,12 +672,15 @@ void sslSetCertificate(struct SSLSupport *ssl, const char *filename,
       char hostname[256], buf[4096];
       check(!gethostname(hostname, sizeof(hostname)));
       struct hostent he_buf, *he;
-      int h_err;
-      if (gethostbyname_r(hostname, &he_buf, buf, sizeof(buf),
-                          &he, &h_err)) {
-        sslGenerateCertificate(defaultCertificate, hostname);
-      } else {
+      int h_err = 0;
+      int ret = gethostbyname_r(hostname, &he_buf, buf, sizeof(buf), &he, &h_err);
+      if (!ret && he && he->h_name) {
         sslGenerateCertificate(defaultCertificate, he->h_name);
+      } else {
+        if (h_err) {
+          warn("Error getting host information: \"%s\".", hstrerror(h_err));
+        }
+        sslGenerateCertificate(defaultCertificate, hostname);
       }
     } else {
       goto valid_certificate;
This page took 0.03728 seconds and 5 git commands to generate.