diff --git a/libsoup/soup-auth-basic.c b/libsoup/soup-auth-basic.c
index 5f1e718..d8b3226 100644
--- a/libsoup/soup-auth-basic.c
+++ b/libsoup/soup-auth-basic.c
@@ -74,7 +74,7 @@ soup_auth_basic_get_protection_space (SoupAuth *auth, SoupURI *source_uri)
/* Strip filename component */
p = strrchr (space, '/');
- if (p == space && p[1])
+ if (p && p == space && p[1])
p[1] = '\0';
else if (p && p[1])
*p = '\0';
diff --git a/libsoup/soup-auth-negotiate.c b/libsoup/soup-auth-negotiate.c
index 94863d6..f94760c 100644
--- a/libsoup/soup-auth-negotiate.c
+++ b/libsoup/soup-auth-negotiate.c
@@ -268,7 +268,7 @@ soup_auth_negotiate_update_connection (SoupConnectionAuth *auth, SoupMessage *ms
} else {
/* FIXME: report further upward via
* soup_message_get_error_message */
- g_warning ("gssapi step failed: %s", err->message);
+ g_warning ("gssapi step failed: %s", err ? err->message : "Unknown error");
success = FALSE;
}
} else if (!strncmp (header, "Negotiate ", 10)) {
diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
index a180c6e..abef34c 100644
--- a/libsoup/soup-message-headers.c
+++ b/libsoup/soup-message-headers.c
@@ -1324,7 +1324,7 @@ content_type_setter (SoupMessageHeaders *hdrs, const char *value)
{
g_free (hdrs->content_type);
if (value) {
- char *content_type, *p;
+ char *content_type = NULL, *p;
parse_content_foo (hdrs, "Content-Type", &content_type, NULL);
p = strpbrk (content_type, " /");
diff --git a/libsoup/soup-xmlrpc.c b/libsoup/soup-xmlrpc.c
index 42dcda9..2da6344 100644
--- a/libsoup/soup-xmlrpc.c
+++ b/libsoup/soup-xmlrpc.c
@@ -588,7 +588,7 @@ signature_get_next_complete_type (const char **signature)
(*signature)++;
- if ( (*signature)[0] == stack[stack_len - 1])
+ if ( stack_len > 0 && (*signature)[0] == stack[stack_len - 1])
stack_len--;
} while (stack_len > 0);
diff --git a/tests/test-utils.c b/tests/test-utils.c
index 9c74206..fc58362 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -676,6 +678,8 @@ soup_test_request_read_all (SoupRequest *req,
if (!SOUP_IS_SESSION_SYNC (soup_request_get_session (req)))
data.loop = g_main_loop_new (g_main_context_get_thread_default (), FALSE);
+ else
+ data.loop = NULL;
do {
if (SOUP_IS_SESSION_SYNC (soup_request_get_session (req))) {
@@ -691,7 +695,7 @@ soup_test_request_read_all (SoupRequest *req,
}
} while (nread > 0);
- if (!SOUP_IS_SESSION_SYNC (soup_request_get_session (req)))
+ if (data.loop)
g_main_loop_unref (data.loop);
return nread == 0;