Commit: 95f8d34f9c0980924098ce9554e899e461ce7cec Author: Gustavo Lopes <glo...@nebm.ist.utl.pt> Thu, 31 Jan 2013 15:26:10 +0100 Parents: 5c0a8b1a2a34ec504091e4e105e1c3b79d9fff89 Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=95f8d34f9c0980924098ce9554e899e461ce7cec Log: Revert "Payload of HOPLIMIT/TCLASS are 8-bit" This reverts commit 61a5ec7381ba5388a52926779fe3f58af0caea83. I checked Linux and OpenBSD and both use integers to write the IPV6_TCLASS messages and they don't force any endianness. This is despite RFC 3542 explicitly saying the first byte of cmsg_data will have the result. In any case, it doesn't make any difference in little-endian archs. Changed paths: M ext/sockets/conversions.c M ext/sockets/conversions.h M ext/sockets/sendrecvmsg.c Diff: diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index d0d0c4b..fa6d949 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -317,7 +317,7 @@ double_case: return ret; } -static void from_zval_write_int(const zval *arr_value, char *field, ser_context *ctx) +void from_zval_write_int(const zval *arr_value, char *field, ser_context *ctx) { long lval; int ival; @@ -355,25 +355,6 @@ static void from_zval_write_uint32(const zval *arr_value, char *field, ser_conte ival = (uint32_t)lval; memcpy(field, &ival, sizeof(ival)); } -void from_zval_write_uint8(const zval *arr_value, char *field, ser_context *ctx) -{ - long lval; - uint8_t ival; - - lval = from_zval_integer_common(arr_value, ctx); - if (ctx->err.has_error) { - return; - } - - if (lval < 0 || lval > 0xFF) { - do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " - "for an unsigned 8-bit integer"); - return; - } - - ival = (uint8_t)lval; - memcpy(field, &ival, sizeof(ival)); -} static void from_zval_write_net_uint16(const zval *arr_value, char *field, ser_context *ctx) { long lval; @@ -460,7 +441,7 @@ static void from_zval_write_uid_t(const zval *arr_value, char *field, ser_contex memcpy(field, &ival, sizeof(ival)); } -static void to_zval_read_int(const char *data, zval *zv, res_context *ctx) +void to_zval_read_int(const char *data, zval *zv, res_context *ctx) { int ival; memcpy(&ival, data, sizeof(ival)); @@ -474,13 +455,6 @@ static void to_zval_read_unsigned(const char *data, zval *zv, res_context *ctx) ZVAL_LONG(zv, (long)ival); } -void to_zval_read_uint8(const char *data, zval *zv, res_context *ctx) -{ - uint8_t ival; - memcpy(&ival, data, sizeof(ival)); - - ZVAL_LONG(zv, (long)ival); -} static void to_zval_read_net_uint16(const char *data, zval *zv, res_context *ctx) { uint16_t ival; diff --git a/ext/sockets/conversions.h b/ext/sockets/conversions.h index 79ca4ab..70f31ba 100644 --- a/ext/sockets/conversions.h +++ b/ext/sockets/conversions.h @@ -37,8 +37,8 @@ void err_msg_dispose(struct err_s *err TSRMLS_DC); void allocations_dispose(zend_llist **allocations); /* CONVERSION FUNCTIONS */ -void from_zval_write_uint8(const zval *arr_value, char *field, ser_context *ctx); -void to_zval_read_uint8(const char *data, zval *zv, res_context *ctx); +void from_zval_write_int(const zval *arr_value, char *field, ser_context *ctx); +void to_zval_read_int(const char *data, zval *zv, res_context *ctx); #ifdef IPV6_PKTINFO void from_zval_write_in6_pktinfo(const zval *container, char *in6_pktinfo_c, ser_context *ctx); diff --git a/ext/sockets/sendrecvmsg.c b/ext/sockets/sendrecvmsg.c index f325b03..b83b3ae 100644 --- a/ext/sockets/sendrecvmsg.c +++ b/ext/sockets/sendrecvmsg.c @@ -73,14 +73,12 @@ static void init_ancillary_registry(void) #endif #ifdef IPV6_HOPLIMIT - PUT_ENTRY(sizeof(int), 0, 0, from_zval_write_uint8, - to_zval_read_uint8, IPPROTO_IPV6, IPV6_HOPLIMIT); + PUT_ENTRY(sizeof(int), 0, 0, from_zval_write_int, + to_zval_read_int, IPPROTO_IPV6, IPV6_HOPLIMIT); #endif -#ifdef IPV6_TCLASS - PUT_ENTRY(sizeof(int), 0, 0, from_zval_write_uint8, - to_zval_read_uint8, IPPROTO_IPV6, IPV6_TCLASS); -#endif + PUT_ENTRY(sizeof(int), 0, 0, from_zval_write_int, + to_zval_read_int, IPPROTO_IPV6, IPV6_TCLASS); #ifdef SO_PASSCRED PUT_ENTRY(sizeof(struct ucred), 0, 0, from_zval_write_ucred, -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php