cvs: /php4/ext/standard fsock.c

From: Date: Mon, 10 Jan 2000 19:56:53 +0000
Subject: cvs: /php4/ext/standard fsock.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-9015@lists.php.net to get a copy of this message
zeev Mon Jan 10 11:56:53 2000 EDT Modified files: /php4/ext/standard fsock.c Log: @- Fixed a crash in pfsockopen() (Zeev) Index: php4/ext/standard/fsock.c diff -u php4/ext/standard/fsock.c:1.36 php4/ext/standard/fsock.c:1.37 --- php4/ext/standard/fsock.c:1.36 Fri Dec 31 17:31:52 1999 +++ php4/ext/standard/fsock.c Mon Jan 10 11:56:23 2000 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fsock.c,v 1.36 2000/01/01 01:31:52 sas Exp $ */ +/* $Id: fsock.c,v 1.37 2000/01/10 19:56:23 zeev Exp $ */ /* Synced with php 3.0 revision 1.121 1999-06-18 [ssb] */ /* Synced with php 3.0 revision 1.133 1999-07-21 [sas] */ @@ -76,7 +76,16 @@ extern int le_fp; #endif -#define FREE_SOCK if(socketd >= 0) close(socketd); efree(sock); if (key) efree(key) +#define CLOSE_SOCK(free_sock) \ + if(socketd >= 0) { \ + close(socketd); \ + } \ + if (free_sock) { \ + efree(sock); \ + } \ + if (key) { \ + efree(key); \ + } #define SEARCHCR() \ p = memchr(READPTR(sock), '\n', MIN(TOREAD(sock), maxlen)); @@ -249,7 +258,7 @@ FLS_FETCH(); if (arg_count > 5 || arg_count < 2 || zend_get_parameters_array_ex(arg_count,args)==FAILURE) { - FREE_SOCK; + CLOSE_SOCK(1); WRONG_PARAM_COUNT; } switch(arg_count) { @@ -285,7 +294,7 @@ if (persistent && zend_hash_find(&FG(ht_fsock_keys), key, strlen(key) + 1, (void *) &sockp) == SUCCESS) { - FREE_SOCK; + CLOSE_SOCK(0); *sock = *sockp; ZEND_REGISTER_RESOURCE(return_value,sock,php_file_le_socket()); return; @@ -307,21 +316,21 @@ socketd = socket(AF_INET,udp ? SOCK_DGRAM : SOCK_STREAM,0); if (socketd == SOCK_ERR) { - FREE_SOCK; + CLOSE_SOCK(1); RETURN_FALSE; } server.sin_family = AF_INET; if(lookup_hostname(udp ? &(*args[0])->value.str.val[6] : (*args[0])->value.str.val,&server.sin_addr)) { - FREE_SOCK; + CLOSE_SOCK(1); RETURN_FALSE; } server.sin_port = htons(portno); if (connect_nonb(socketd, (struct sockaddr *)&server, sizeof(server), &timeout) == SOCK_CONN_ERR) { - FREE_SOCK; + CLOSE_SOCK(1); if(arg_count>2) (*args[2])->value.lval = errno; if(arg_count>3) { (*args[3])->value.str.val = estrdup(strerror(errno)); @@ -335,7 +344,7 @@ struct sockaddr_un unix_addr; socketd = socket(AF_UNIX,SOCK_STREAM,0); if (socketd == SOCK_ERR) { - FREE_SOCK; + CLOSE_SOCK(1); RETURN_FALSE; } @@ -344,7 +353,7 @@ strcpy(unix_addr.sun_path, (*args[0])->value.str.val); if (connect_nonb(socketd, (struct sockaddr *) &unix_addr, sizeof(unix_addr), &timeout) == SOCK_CONN_ERR) { - FREE_SOCK; + CLOSE_SOCK(1); if(arg_count>2) (*args[2])->value.lval = errno; if(arg_count>3) { (*args[3])->value.str.val = estrdup(strerror(errno));

« previous php.version4 (#9015) next »