[gupnp] Fix critical on unset ACL



commit 0fa05ed081177619fb94d7a0c74b17d34915b88a
Author: Jens Georg <mail jensge org>
Date:   Sun May 4 15:39:42 2014 +0200

    Fix critical on unset ACL
    
    Signed-off-by: Jens Georg <mail jensge org>

 libgupnp/gupnp-context.c |   52 +++++++++++++++++++++++----------------------
 1 files changed, 27 insertions(+), 25 deletions(-)
---
diff --git a/libgupnp/gupnp-context.c b/libgupnp/gupnp-context.c
index f8855d4..90c7b18 100644
--- a/libgupnp/gupnp-context.c
+++ b/libgupnp/gupnp-context.c
@@ -1396,34 +1396,36 @@ gupnp_acl_server_handler (SoupServer *server,
         agent = soup_message_headers_get_one (msg->request_headers,
                                               "User-Agent");
 
-        if (gupnp_acl_can_sync (handler->context->priv->acl)) {
-                if (!gupnp_acl_is_allowed (handler->context->priv->acl,
-                                           device,
-                                           handler->service,
-                                           path,
-                                           soup_client_context_get_host (client),
-                                           agent)) {
-                        soup_message_set_status (msg, SOUP_STATUS_FORBIDDEN);
+        if (handler->context->priv->acl != NULL) {
+                if (gupnp_acl_can_sync (handler->context->priv->acl)) {
+                        if (!gupnp_acl_is_allowed (handler->context->priv->acl,
+                                                   device,
+                                                   handler->service,
+                                                   path,
+                                                   soup_client_context_get_host (client),
+                                                   agent)) {
+                                soup_message_set_status (msg, SOUP_STATUS_FORBIDDEN);
+
+                                return;
+                        }
+                } else {
+                        AclAsyncHandler *data;
+
+                        data = acl_async_handler_new (server, msg, path, query, client, handler);
+
+                        soup_server_pause_message (server, msg);
+                        gupnp_acl_is_allowed_async (handler->context->priv->acl,
+                                                    device,
+                                                    handler->service,
+                                                    path,
+                                                    soup_client_context_get_host (client),
+                                                    agent,
+                                                    NULL,
+                                                    (GAsyncReadyCallback) gupnp_acl_async_callback,
+                                                    data);
 
                         return;
                 }
-        } else {
-                AclAsyncHandler *data;
-
-                data = acl_async_handler_new (server, msg, path, query, client, handler);
-
-                soup_server_pause_message (server, msg);
-                gupnp_acl_is_allowed_async (handler->context->priv->acl,
-                                            device,
-                                            handler->service,
-                                            path,
-                                            soup_client_context_get_host (client),
-                                            agent,
-                                            NULL,
-                                            (GAsyncReadyCallback) gupnp_acl_async_callback,
-                                            data);
-
-                return;
         }
 
         /* Delegate to orignal callback */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]