]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-urlauth: Don't try to access garbage memory on error handling paths.
authorTimo Sirainen <tss@iki.fi>
Mon, 6 May 2013 15:35:36 +0000 (18:35 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 6 May 2013 15:35:36 +0000 (18:35 +0300)
src/lib-imap-urlauth/imap-urlauth-fetch.c
src/lib-imap-urlauth/imap-urlauth.c

index 8cee33d5e962e8a8a84e07c85dc28c7d07e42114..98018224a55a4d5f5f346fd5f5c89b8903425f5c 100644 (file)
@@ -150,7 +150,7 @@ imap_urlauth_fetch_local(struct imap_urlauth_fetch *ufetch, const char *url,
        const char *error, *errormsg = NULL, *bpstruct = NULL;
        bool debug = ufetch->uctx->user->mail_debug, success;
        enum mail_error error_code;
-       struct imap_msgpart_url *mpurl;
+       struct imap_msgpart_url *mpurl = NULL;
        int ret;
 
        ufetch->pending_requests--;
index 0019f0efb761f41d07d1e90f59c361016401201c..d4ef76c602605d08d0656c880bac6964d8dd3ec2 100644 (file)
@@ -227,7 +227,7 @@ int imap_urlauth_generate(struct imap_urlauth_context *uctx,
        enum imap_url_parse_flags url_flags =
                IMAP_URL_PARSE_ALLOW_URLAUTH;
        struct imap_url *url;
-       struct imap_msgpart_url *mpurl;
+       struct imap_msgpart_url *mpurl = NULL;
        struct mailbox *box;
        const char *error;
        enum mail_error error_code;
@@ -284,7 +284,8 @@ int imap_urlauth_generate(struct imap_urlauth_context *uctx,
        if ((ret = imap_msgpart_url_create(user, url, &mpurl, &error)) < 0 ||
            imap_msgpart_url_verify(mpurl, &error) <= 0) {
                *error_r = t_strdup_printf("Invalid URL: %s", error);
-               imap_msgpart_url_free(&mpurl);
+               if (mpurl != NULL)
+                       imap_msgpart_url_free(&mpurl);
                return ret;
        }
        box = imap_msgpart_url_get_mailbox(mpurl);