Révision c75bc3ba
Ajouté par Ermal il y a presque 10 ans
pfPorts/check_reload_status/files/check_reload_status.c | ||
---|---|---|
110 | 110 |
if (lkey < 128) |
111 | 111 |
sbuf_putc(sb, lkey); |
112 | 112 |
else |
113 |
sbuf_printf(sb, "%c%c%c%c", (u_char)(((lkey >> 24) | 0x80) & 0xFF), (u_char)((lkey >> 16) & 0xFF), (u_char)((lkey >> 8) & 0xFF), (u_char)(lkey & 0xFF));
|
|
113 |
sbuf_printf(sb, "%c%c%c%c", (u_char)((lkey >> 24) | 0x80), (u_char)((lkey >> 16) & 0xFF), (u_char)((lkey >> 8) & 0xFF), (u_char)(lkey & 0xFF));
|
|
114 | 114 |
|
115 | 115 |
if (lvalue < 128 || lvalue > 65535) |
116 | 116 |
sbuf_putc(sb, lvalue); |
117 | 117 |
else |
118 |
sbuf_printf(sb, "%c%c%c%c", (u_char)(((lvalue >> 24) | 0x80) & 0xFF), (u_char)((lvalue >> 16) & 0xFF), (u_char)((lvalue >> 8) & 0xFF), (u_char)(lvalue & 0xFF));
|
|
118 |
sbuf_printf(sb, "%c%c%c%c", (u_char)((lvalue >> 24) | 0x80), (u_char)((lvalue >> 16) & 0xFF), (u_char)((lvalue >> 8) & 0xFF), (u_char)(lvalue & 0xFF));
|
|
119 | 119 |
|
120 | 120 |
if (lkey > 0) |
121 | 121 |
sbuf_printf(sb, "%s", key); |
... | ... | |
324 | 324 |
build_nvpair(&sb, strlen("SCRIPT_FILENAME"), strlen(cmd->command), "SCRIPT_FILENAME", cmd->command); |
325 | 325 |
p = strrchr(cmd->command, '/'); |
326 | 326 |
build_nvpair(&sb, strlen("SCRIPT_NAME"), strlen(p), "SCRIPT_NAME", p); |
327 |
build_nvpair(&sb, strlen("DOCUMENT_URI"), strlen(p), "DOCUMENT_URI", p); |
|
327 | 328 |
if (!cmd->params[0]) |
328 | 329 |
build_nvpair(&sb, strlen("REQUEST_URI"), strlen(p), "REQUEST_URI", p); |
329 |
build_nvpair(&sb, strlen("DOCUMENT_URI"), strlen(p), "DOCUMENT_URI", p); |
|
330 |
if (cmd->params[0]) { |
|
330 |
else { |
|
331 | 331 |
build_nvpair(&sb, strlen("QUERY_STRING"), strlen(cmd->params), "QUERY_STRING", cmd->params); |
332 | 332 |
/* XXX: Hack in sight to avoid using another sbuf */ |
333 | 333 |
/* + 2 is for the / and ? added chars */ |
... | ... | |
371 | 371 |
tmpl = (FCGI_Header *)bufptr; |
372 | 372 |
|
373 | 373 |
prepare_packet(tmpl, FCGI_STDIN, 0, requestId); |
374 |
if (cmd->socket < 0) { |
|
374 |
if (cmd->socket <= 0) {
|
|
375 | 375 |
if ((cmd->socket = fcgi_open_socket(cmd)) < 0) { |
376 | 376 |
/* Reschedule */ |
377 | 377 |
tv.tv_sec = 1; |
... | ... | |
477 | 477 |
} |
478 | 478 |
|
479 | 479 |
command->aggregate = aggregate + 1; |
480 |
memcpy(command->command, cmd->cmd.command, sizeof(command->command)); |
|
480 |
//memcpy(command->command, cmd->cmd.command, sizeof(command->command)); |
|
481 |
strlcpy(command->command, cmd->cmd.command, sizeof(command->command)); |
|
481 | 482 |
if (cmd->cmd.params) |
482 | 483 |
snprintf(command->params, sizeof(command->params), cmd->cmd.params, argv); |
483 | 484 |
|
484 | 485 |
if (!(cmd->cmd.flags & AGGREGATE)) |
485 | 486 |
command->aggregate = 0; |
486 | 487 |
|
487 |
TAILQ_INSERT_HEAD(&cmds, command, rq_link); |
|
488 |
|
|
489 | 488 |
switch (cmd->type) { |
490 | 489 |
case NON: |
491 | 490 |
syslog(LOG_NOTICE, "%s", cmd->cmd.syslog); |
492 | 491 |
break; |
493 | 492 |
case COMPOUND: /* XXX: Should never happen. */ |
494 | 493 |
syslog(LOG_ERR, "trying to execute COMPOUND entry!!! Please report it."); |
494 |
free(command); |
|
495 | 495 |
return; |
496 | 496 |
/* NOTREACHED */ |
497 | 497 |
break; |
... | ... | |
507 | 507 |
break; |
508 | 508 |
} |
509 | 509 |
|
510 |
TAILQ_INSERT_HEAD(&cmds, command, rq_link); |
|
511 |
|
|
510 | 512 |
if (cmd->cmd.flags & FCGICMD) { |
511 |
command->socket = fcgi_open_socket(command); |
|
512 | 513 |
timeout_set(&command->ev, fcgi_send_command, command); |
513 | 514 |
} else { |
514 | 515 |
timeout_set(&command->ev, run_command_detailed, command); |
Formats disponibles : Unified diff
Use strlcpy seems memcpy mangles things. Also do some correction in general and a case where memory will leak