check that memory allocation functions truly return good data or bail out
authorDaniel Stenberg <daniel@haxx.se>
Thu, 13 May 2004 15:18:29 +0000 (15:18 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 13 May 2004 15:18:29 +0000 (15:18 +0000)
lib/share.c

index ced7e188da2bc071895887ba874483d02b990cd7..d1292c4ae222a9f8ea46beddd6fa7f7163194716 100644 (file)
@@ -68,28 +68,28 @@ curl_share_setopt(CURLSH *sh, CURLSHoption option, ...)
     /* this is a type this share will share */
     type = va_arg(param, int);
     share->specifier |= (1<<type);
-    switch( type )
-    {
-      case CURL_LOCK_DATA_DNS:
-        if (!share->hostcache) {
-          share->hostcache = Curl_mk_dnscache();
-        }
-        break;
-
-      case CURL_LOCK_DATA_COOKIE:
-        if (!share->cookies) {
-          share->cookies = Curl_cookie_init(NULL, NULL, NULL, TRUE );
-        }
-        break;
-
-      case CURL_LOCK_DATA_SSL_SESSION:
-        break;
-
-      case CURL_LOCK_DATA_CONNECT:
-        break;
-
-      default:
-        return CURLSHE_BAD_OPTION;
+    switch( type ) {
+    case CURL_LOCK_DATA_DNS:
+      if (!share->hostcache) {
+        share->hostcache = Curl_mk_dnscache();
+        if(!share->hostcache)
+          return CURLSHE_NOMEM;
+      }
+      break;
+      
+    case CURL_LOCK_DATA_COOKIE:
+      if (!share->cookies) {
+        share->cookies = Curl_cookie_init(NULL, NULL, NULL, TRUE );
+        if(!share->cookies)
+          return CURLSHE_NOMEM;
+      }
+      break;
+
+    case CURL_LOCK_DATA_SSL_SESSION: /* not supported (yet) */
+    case CURL_LOCK_DATA_CONNECT:     /* not supported (yet) */
+
+    default:
+      return CURLSHE_BAD_OPTION;
     }
     break;