From a56b999c2b4256085b25cca5906399a3a49aa9e1 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 30 Jun 2011 23:47:18 -0400 Subject: [PATCH] Fixed a stack smash in the wiki module --- citadel/modules/wiki/serv_wiki.c | 21 ++++++--------------- citadel/serv_extensions.c | 4 ---- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/citadel/modules/wiki/serv_wiki.c b/citadel/modules/wiki/serv_wiki.c index 62b2132d5..4643d917d 100644 --- a/citadel/modules/wiki/serv_wiki.c +++ b/citadel/modules/wiki/serv_wiki.c @@ -281,11 +281,8 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { } } while ( (IsEmptyStr(boundary)) && (*ptr != 0) ); - - /****************** STACK SMASH IS SOMEWHERE BELOW THIS LINE **************/ - - - /* Now look for the first boundary. That is where we need to insert our fun. + /* + * Now look for the first boundary. That is where we need to insert our fun. */ if (!IsEmptyStr(boundary)) { snprintf(prefixed_boundary, sizeof prefixed_boundary, "--%s", boundary); @@ -295,16 +292,15 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { ptr = bmstrcasestr(history_msg->cm_fields['M'], prefixed_boundary); if (ptr != NULL) { char *the_rest_of_it = strdup(ptr); - char uuid[32]; + char uuid[64]; char memo[512]; - char encoded_memo[768]; + char encoded_memo[1024]; generate_uuid(uuid); snprintf(memo, sizeof memo, "%s|%ld|%s|%s", uuid, time(NULL), CCC->user.fullname, config.c_nodename - /* no longer logging CCC->cs_inet_email */ ); CtdlEncodeBase64(encoded_memo, memo, strlen(memo), 0); sprintf(ptr, "--%s\n" @@ -324,10 +320,9 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { } history_msg->cm_fields['T'] = realloc(history_msg->cm_fields['T'], 32); - if (history_msg->cm_fields['T'] == NULL) { - syslog(LOG_EMERG, "*** REALLOC FAILED *** %s", strerror(errno)); + if (history_msg->cm_fields['T'] != NULL) { + snprintf(history_msg->cm_fields['T'], 32, "%ld", time(NULL)); } - snprintf(history_msg->cm_fields['T'], 32, "%ld", time(NULL)); CtdlSubmitMsg(history_msg, NULL, "", 0); } @@ -335,10 +330,6 @@ int wiki_upload_beforesave(struct CtdlMessage *msg) { syslog(LOG_ALERT, "Empty boundary string in history message. No history!\n"); } - - /****************** STACK SMASH IS SOMEWHERE BELOW THIS LINE **************/ - - free(diffbuf); free(history_msg); return(0); diff --git a/citadel/serv_extensions.c b/citadel/serv_extensions.c index 76dbacb4a..4f294cf24 100644 --- a/citadel/serv_extensions.c +++ b/citadel/serv_extensions.c @@ -978,13 +978,9 @@ int PerformMessageHooks(struct CtdlMessage *msg, int EventType) /* Otherwise, run all the hooks appropriate to this event type. */ - int num_hooks_processed = 0; for (fcn = MessageHookTable; fcn != NULL; fcn = fcn->next) { if (fcn->eventtype == EventType) { total_retval = total_retval + (*fcn->h_function_pointer) (msg); - syslog(LOG_DEBUG, "%d hooks completed, total_retval=%d", - ++num_hooks_processed, total_retval - ); } } -- 2.30.2