Author: rhuijben
Date: Wed Nov 18 19:09:47 2015
New Revision: 1715037

URL: http://svn.apache.org/viewvc?rev=1715037&view=rev
Log:
Don't segfault when explicit setting the config to NULL on a ssl bucket.

This can happen when putting something in an aggregate that didn't
have a config set on it.

* buckets/ssl_buckets.c
  Don't try to read from NULL configs.

* config_store.c
  (serf_config_get_object): Don't try to read a NULL config.

Modified:
    serf/trunk/buckets/ssl_buckets.c
    serf/trunk/config_store.c

Modified: serf/trunk/buckets/ssl_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/ssl_buckets.c?rev=1715037&r1=1715036&r2=1715037&view=diff
==============================================================================
--- serf/trunk/buckets/ssl_buckets.c (original)
+++ serf/trunk/buckets/ssl_buckets.c Wed Nov 18 19:09:47 2015
@@ -2337,13 +2337,15 @@ static apr_status_t serf_ssl_set_config(
         }
     }
 
-    status = serf_config_get_string(config, SERF_CONFIG_CONN_PIPELINING,
-                                    &pipelining);
-    if (status)
-        return status;
+    if (config) {
+        status = serf_config_get_string(config, SERF_CONFIG_CONN_PIPELINING,
+                                        &pipelining);
+        if (status)
+            return status;
 
-    if (strcmp(pipelining, "Y") == 0) {
-        SSL_CTX_set_info_callback(ssl_ctx->ctx, detect_renegotiate);
+        if (strcmp(pipelining, "Y") == 0) {
+            SSL_CTX_set_info_callback(ssl_ctx->ctx, detect_renegotiate);
+        }
     }
 
     return err_status;

Modified: serf/trunk/config_store.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/config_store.c?rev=1715037&r1=1715036&r2=1715037&view=diff
==============================================================================
--- serf/trunk/config_store.c (original)
+++ serf/trunk/config_store.c Wed Nov 18 19:09:47 2015
@@ -332,6 +332,10 @@ apr_status_t serf_config_get_object(serf
 {
     serf__config_hdr_t *target;
 
+    if (config == NULL) {
+        *value = NULL;
+        return APR_EINVARG;
+    }
     if (key & SERF_CONFIG_PER_CONTEXT)
         target = config->per_context;
     else if (key & SERF_CONFIG_PER_HOST)


Reply via email to