diff --git a/src/elogd.c b/src/elogd.c index a216306c..982697c4 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -6,6 +6,9 @@ Contents: Web server program for Electronic Logbook ELOG $Log$ + Revision 1.277 2004/03/05 20:39:09 midas + Allocate heap memory in display_line + Revision 1.276 2004/03/03 10:29:56 midas Fixed bug with date attribute email notification @@ -7253,7 +7256,7 @@ void show_find_form(LOGBOOK * lbs) if (i > 2) { if (!getcfg(lbs->name, "Search all logbooks", str) || atoi(str) == 1) { rsprintf("\n"); - rsprintf("\n", loc("Search all logbooks")); + rsprintf("
\n", loc("Search all logbooks")); } } @@ -10209,8 +10212,8 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, BOOL select, int *n_display, char *locked_by) { char str[NAME_LENGTH], ref[256], *nowrap, sclass[80], format[256], - file_name[MAX_PATH_LENGTH]; - char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH]; + file_name[MAX_PATH_LENGTH], *slist, *svalue; +// char slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH]; char display[NAME_LENGTH], attr_icon[80]; int i, j, i_line, index, colspan; BOOL skip_comma; @@ -10218,6 +10221,9 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, struct tm ts, *pts; time_t ltime; + slist = malloc((MAX_N_ATTR + 10)*NAME_LENGTH); + svalue = malloc((MAX_N_ATTR + 10)*NAME_LENGTH); + sprintf(ref, "../%s/%d", lbs->name_enc, message_id); if (strieq(mode, "Summary")) { @@ -10291,13 +10297,13 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, } } - j = build_subst_list(lbs, slist, svalue, attrib); + j = build_subst_list(lbs, (char (*)[NAME_LENGTH])slist, (char (*)[NAME_LENGTH])svalue, attrib); /* add message id and entry time */ - strcpy(slist[j], "Message ID"); - sprintf(svalue[j++], "%d", message_id); + strcpy(&slist[NAME_LENGTH*j], "Message ID"); + sprintf(&svalue[NAME_LENGTH*j++], "%d", message_id); - strcpy(slist[j], "entry time"); + strcpy(&slist[NAME_LENGTH*j], "entry time"); if (!getcfg(lbs->name, "Time format", format)) strcpy(format, DEFAULT_TIME_FORMAT); @@ -10317,9 +10323,9 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, ts.tm_isdst = -1; /* let mktime compute DST */ mktime(&ts); - strftime(svalue[j++], sizeof(str), format, &ts); + strftime(&svalue[NAME_LENGTH*j++], sizeof(str), format, &ts); - strsubst(display, slist, svalue, j); + strsubst(display, (char (*)[NAME_LENGTH])slist, (char (*)[NAME_LENGTH])svalue, j); rsprintf("", ref); rsputs2(display); @@ -10655,6 +10661,9 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, if (!show_attachments && attachment[0][0]) rsprintf("\n"); } + + free(slist); + free(svalue); } /*------------------------------------------------------------------*/ @@ -17188,6 +17197,8 @@ int main(int argc, char *argv[]) time_t now; struct tm *tms; + printf("elogd %s built %s\n", VERSION, __TIMESTAMP__); + #ifdef OS_UNIX /* save gid/uid to regain later */ orig_gid = getegid();