Projet

Général

Profil

« Précédent | Suivant » 

Révision c75bc3ba

Ajouté par Ermal il y a presque 10 ans

Use strlcpy seems memcpy mangles things. Also do some correction in general and a case where memory will leak

Voir les différences:

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