fclose(fp);
}
- syslog(LOG_DEBUG, "diff length is %d bytes", diffbuf_len);
+ syslog(LOG_DEBUG, "diff length is "SIZE_T_FMT" bytes", diffbuf_len);
unlink(diff_old_filename);
unlink(diff_new_filename);
}
} 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);
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"
}
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);
}
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);
msg->cm_fields['A'] = strdup("Citadel");
CtdlCreateRoom(wwm, 5, "", 0, 1, 1, VIEW_BBS); /* Not an error if already exists */
msgnum = CtdlSubmitMsg(msg, NULL, wwm, 0); /* Store the revision here */
+
+ /*
+ * WARNING: VILE SLEAZY HACK
+ * This will avoid the 'message xxx is not in this room' security error,
+ * but only if the client fetches the message we just generated immediately
+ * without first trying to perform other fetch operations.
+ */
+ if (CC->cached_msglist != NULL) {
+ free(CC->cached_msglist);
+ CC->cached_msglist = NULL;
+ CC->cached_num_msgs = 0;
+ }
+ CC->cached_msglist = malloc(sizeof(long));
+ if (CC->cached_msglist != NULL) {
+ CC->cached_num_msgs = 1;
+ CC->cached_msglist[0] = msgnum;
+ }
+
}
else if (!strcasecmp(operation, "revert")) {
snprintf(timestamp, sizeof timestamp, "%ld", time(NULL));
CtdlRegisterProtoHook(cmd_wiki, "WIKI", "Commands related to Wiki management");
}
- /* return our Subversion id for the Log */
+ /* return our module name for the log */
return "wiki";
}