diff options
-rw-r--r-- | fetchmail.c | 6 | ||||
-rw-r--r-- | uid.c | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/fetchmail.c b/fetchmail.c index 43799cc1..a9bf2348 100644 --- a/fetchmail.c +++ b/fetchmail.c @@ -694,6 +694,12 @@ static int load_params(int argc, char **argv, int optind) ctl = hostalloc(&cmd_opts); ctl->server.pollname = xstrdup(argv[optind]); + /* avoid making pathological circular lists */ + ctl->server.localdomains = (struct idlist *)NULL; + ctl->localnames = (struct idlist *)NULL; + ctl->mailboxes = (struct idlist *)NULL; + ctl->smtphunt = (struct idlist *)NULL; + foundit: ctl->active = TRUE; } @@ -277,7 +277,9 @@ int delete_str(struct idlist **idl, int num) void append_str_list(struct idlist **idl, struct idlist **nidl) /* append nidl to idl (does not copy *) */ { - if ((*idl) == (struct idlist *)NULL) + if ((*nidl) == (struct idlist *)NULL) + return; + else if ((*idl) == (struct idlist *)NULL) *idl = *nidl; else if ((*idl)->next == (struct idlist *)NULL) (*idl)->next = *nidl; |