commit ca19994f71ef73670c76d5b9f768c9ee92ea09ae
parent 5afa8c2859595e7a618337b1448d43e509253610
Author: Andrej Kacian <ticho@claws-mail.org>
Date: Mon, 17 Dec 2018 22:22:01 +0100
Allow empty output parameters in get_serverportfp_from_filename()
Diffstat:
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/common/utils.c b/src/common/utils.c
@@ -4652,17 +4652,27 @@ gboolean get_serverportfp_from_filename(const gchar *str, gchar **server, gchar
return FALSE;
}
- *server = g_strndup(str, dotport_pos - str);
+ if (server != NULL)
+ *server = g_strndup(str, dotport_pos - str);
if (dotfp_pos) {
- *port = g_strndup(dotport_pos + 1, dotfp_pos - dotport_pos - 1);
- *fp = g_strndup(dotfp_pos + 1, dotcert_pos - dotfp_pos - 1);
+ if (port != NULL)
+ *port = g_strndup(dotport_pos + 1, dotfp_pos - dotport_pos - 1);
+ if (fp != NULL)
+ *fp = g_strndup(dotfp_pos + 1, dotcert_pos - dotfp_pos - 1);
} else {
- *port = g_strndup(dotport_pos + 1, dotcert_pos - dotport_pos - 1);
- *fp = NULL;
+ if (port != NULL)
+ *port = g_strndup(dotport_pos + 1, dotcert_pos - dotport_pos - 1);
+ if (fp != NULL)
+ *fp = NULL;
}
- debug_print("filename='%s' => server='%s' port='%s' fp='%s'\n", str, *server, *port, *fp);
- if (!*server || !*port)
+ debug_print("filename='%s' => server='%s' port='%s' fp='%s'\n",
+ str,
+ (server ? *server : "(n/a)"),
+ (port ? *port : "(n/a)"),
+ (fp ? *fp : "(n/a)"));
+
+ if (!(server && *server) || !(port && *port))
return FALSE;
else
return TRUE;