summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Lopes <glopes@nebm.ist.utl.pt>2013-01-31 15:26:10 +0100
committerGustavo Lopes <glopes@nebm.ist.utl.pt>2013-02-02 16:38:08 +0100
commit95f8d34f9c0980924098ce9554e899e461ce7cec (patch)
treec69f9f914f9e6106b632fd54f022294e768d793b
parent5c0a8b1a2a34ec504091e4e105e1c3b79d9fff89 (diff)
downloadphp-git-95f8d34f9c0980924098ce9554e899e461ce7cec.tar.gz
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.
-rw-r--r--ext/sockets/conversions.c30
-rw-r--r--ext/sockets/conversions.h4
-rw-r--r--ext/sockets/sendrecvmsg.c10
3 files changed, 8 insertions, 36 deletions
diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c
index d0d0c4b798..fa6d949486 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 79ca4ab76e..70f31ba676 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 f325b0378a..b83b3ae482 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,