From: Wilfried Göesgens Date: Sat, 20 Jan 2007 15:30:06 +0000 (+0000) Subject: * if the message is not valid, try to free the message pointer in message_free X-Git-Tag: v7.86~3648 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=08726130fc930fa8e434306eff1e3b73bcbdeb87 * if the message is not valid, try to free the message pointer in message_free * be paranoid about message pointers being non initialized --- diff --git a/citadel/euidindex.c b/citadel/euidindex.c index dd9b171dc..752437777 100644 --- a/citadel/euidindex.c +++ b/citadel/euidindex.c @@ -154,7 +154,7 @@ void index_message_by_euid(char *euid, struct ctdlroom *qrbuf, long msgnum) { * Called by rebuild_euid_index_for_room() to index one message. */ void rebuild_euid_index_for_msg(long msgnum, void *userdata) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; msg = CtdlFetchMessage(msgnum, 0); if (msg == NULL) return; diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 2b09ed2b9..badbc8f7c 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -532,7 +532,7 @@ int CtdlForEachMessage(int mode, long ref, char *search_string, int num_processed = 0; long thismsg; struct MetaData smi; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; int is_seen = 0; long lastold = 0L; int printed_lastold = 0; @@ -1109,7 +1109,11 @@ void CtdlFreeMessage(struct CtdlMessage *msg) { int i; - if (is_valid_message(msg) == 0) return; + if (is_valid_message(msg) == 0) + { + if (msg != NULL) free (msg); + return; + } for (i = 0; i < 256; ++i) if (msg->cm_fields[i] != NULL) { @@ -1902,7 +1906,7 @@ void cmd_msg2(char *cmdbuf) void cmd_msg3(char *cmdbuf) { long msgnum; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ser_ret smr; if (CC->internal_pgm == 0) { diff --git a/citadel/serv_calendar.c b/citadel/serv_calendar.c index 457ca654f..7833ab84f 100644 --- a/citadel/serv_calendar.c +++ b/citadel/serv_calendar.c @@ -376,7 +376,7 @@ void ical_locate_part(char *name, char *filename, char *partnum, char *disp, * Respond to a meeting request. */ void ical_respond(long msgnum, char *partnum, char *action) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; if ( @@ -606,7 +606,7 @@ int ical_update_my_calendar_with_reply(icalcomponent *cal) { char uid[SIZ]; char hold_rm[ROOMNAMELEN]; long msgnum_being_replaced = 0; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct original_event_container oec; icalcomponent *original_event; char *serialized_event = NULL; @@ -712,7 +712,7 @@ int ical_update_my_calendar_with_reply(icalcomponent *cal) { * passes it up to ical_update_my_calendar_with_reply() for processing. */ void ical_handle_rsvp(long msgnum, char *partnum, char *action) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; int ret; @@ -876,7 +876,7 @@ int ical_ctdl_is_overlap( */ void ical_hunt_for_conflicts_backend(long msgnum, void *data) { icalcomponent *cal; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; struct icaltimetype t1start, t1end, t2start, t2end; icalproperty *p; @@ -993,7 +993,7 @@ void ical_hunt_for_conflicts(icalcomponent *cal) { * Hunt for conflicts (Phase 1 -- retrieve the object and call Phase 2) */ void ical_conflicts(long msgnum, char *partnum) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; msg = CtdlFetchMessage(msgnum, 1); @@ -1133,7 +1133,7 @@ void ical_add_to_freebusy(icalcomponent *fb, icalcomponent *cal) { */ void ical_freebusy_backend(long msgnum, void *data) { icalcomponent *cal; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; cal = (icalcomponent *)data; @@ -1336,7 +1336,7 @@ void ical_freebusy(char *who) { */ void ical_getics_backend(long msgnum, void *data) { icalcomponent *encaps, *c; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; struct ical_respond_data ird; encaps = (icalcomponent *)data; diff --git a/citadel/serv_expire.c b/citadel/serv_expire.c index 56fb499fc..542c1701f 100644 --- a/citadel/serv_expire.c +++ b/citadel/serv_expire.c @@ -126,7 +126,7 @@ void GatherPurgeMessages(struct ctdlroom *qrbuf, void *data) { struct ExpirePolicy epbuf; long delnum; time_t xtime, now; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; int a; struct cdbdata *cdbfr; long *msglist = NULL; @@ -651,7 +651,7 @@ int PurgeEuidIndexTable(void) { struct EPurgeList *el = NULL; struct EPurgeList *eptr; long msgnum; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; /* Phase 1: traverse through the table, discovering old records... */ lprintf(CTDL_DEBUG, "Purge EUID index: phase 1\n"); diff --git a/citadel/serv_network.c b/citadel/serv_network.c index 2b4ca3e12..fb18445ed 100644 --- a/citadel/serv_network.c +++ b/citadel/serv_network.c @@ -425,12 +425,12 @@ void cmd_snet(char *argbuf) { void network_deliver_digest(struct SpoolControl *sc) { char buf[SIZ]; int i; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; long msglen; long msgnum; char *instr = NULL; size_t instr_len = SIZ; - struct CtdlMessage *imsg; + struct CtdlMessage *imsg = NULL; struct namelist *nptr; if (sc->num_msgs_spooled < 1) { @@ -530,7 +530,7 @@ void network_deliver_list(struct CtdlMessage *msg, struct SpoolControl *sc) { long msgnum; char *instr = NULL; size_t instr_len = SIZ; - struct CtdlMessage *imsg; + struct CtdlMessage *imsg = NULL; struct namelist *nptr; /* Don't do this if there were no recipients! */ @@ -1328,7 +1328,7 @@ void network_bounce(struct CtdlMessage *msg, char *reason) { * from the inbound queue */ void network_process_buffer(char *buffer, long size) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; long pos; int field; struct recptypes *recp = NULL; diff --git a/citadel/serv_smtp.c b/citadel/serv_smtp.c index 255dfcf2a..ad1bda2f7 100644 --- a/citadel/serv_smtp.c +++ b/citadel/serv_smtp.c @@ -688,7 +688,7 @@ void smtp_rcpt(char *argbuf) { */ void smtp_data(void) { char *body; - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; long msgnum = (-1L); char nowstamp[SIZ]; struct recptypes *valid; @@ -1513,7 +1513,7 @@ int smtp_purge_completed_deliveries(char *instr) { * Called by smtp_do_queue() to handle an individual message. */ void smtp_do_procmsg(long msgnum, void *userdata) { - struct CtdlMessage *msg; + struct CtdlMessage *msg = NULL; char *instr = NULL; char *results = NULL; int i;