@@ -86,7 +86,7 @@ typedef struct {
86
86
/* zval info */
87
87
const char * name ;
88
88
unsigned name_size ;
89
- int required ;
89
+ bool required ;
90
90
91
91
/* structure info */
92
92
size_t field_offset ; /* 0 to pass full structure, e.g. when more than
@@ -584,9 +584,9 @@ static void to_zval_read_sin_addr(const char *data, zval *zv, res_context *ctx)
584
584
Z_STRLEN_P (zv ) = strlen (Z_STRVAL_P (zv ));
585
585
}
586
586
static const field_descriptor descriptors_sockaddr_in [] = {
587
- {"family" , sizeof ("family" ), 0 , offsetof(struct sockaddr_in , sin_family ), from_zval_write_sa_family , to_zval_read_sa_family },
588
- {"addr" , sizeof ("addr" ), 0 , offsetof(struct sockaddr_in , sin_addr ), from_zval_write_sin_addr , to_zval_read_sin_addr },
589
- {"port" , sizeof ("port" ), 0 , offsetof(struct sockaddr_in , sin_port ), from_zval_write_net_uint16 , to_zval_read_net_uint16 },
587
+ {"family" , sizeof ("family" ), false , offsetof(struct sockaddr_in , sin_family ), from_zval_write_sa_family , to_zval_read_sa_family },
588
+ {"addr" , sizeof ("addr" ), false , offsetof(struct sockaddr_in , sin_addr ), from_zval_write_sin_addr , to_zval_read_sin_addr },
589
+ {"port" , sizeof ("port" ), false , offsetof(struct sockaddr_in , sin_port ), from_zval_write_net_uint16 , to_zval_read_net_uint16 },
590
590
{0 }
591
591
};
592
592
static void from_zval_write_sockaddr_in (const zval * container , char * sockaddr , ser_context * ctx )
@@ -635,11 +635,11 @@ static void to_zval_read_sin6_addr(const char *data, zval *zv, res_context *ctx)
635
635
Z_STRLEN_P (zv ) = strlen (Z_STRVAL_P (zv ));
636
636
}
637
637
static const field_descriptor descriptors_sockaddr_in6 [] = {
638
- {"family" , sizeof ("family" ), 0 , offsetof(struct sockaddr_in6 , sin6_family ), from_zval_write_sa_family , to_zval_read_sa_family },
639
- {"addr" , sizeof ("addr" ), 0 , offsetof(struct sockaddr_in6 , sin6_addr ), from_zval_write_sin6_addr , to_zval_read_sin6_addr },
640
- {"port" , sizeof ("port" ), 0 , offsetof(struct sockaddr_in6 , sin6_port ), from_zval_write_net_uint16 , to_zval_read_net_uint16 },
641
- {"flowinfo" , sizeof ("flowinfo" ), 0 , offsetof(struct sockaddr_in6 , sin6_flowinfo ), from_zval_write_uint32 , to_zval_read_uint32 },
642
- {"scope_id" , sizeof ("scope_id" ), 0 , offsetof(struct sockaddr_in6 , sin6_scope_id ), from_zval_write_uint32 , to_zval_read_uint32 },
638
+ {"family" , sizeof ("family" ), false , offsetof(struct sockaddr_in6 , sin6_family ), from_zval_write_sa_family , to_zval_read_sa_family },
639
+ {"addr" , sizeof ("addr" ), false , offsetof(struct sockaddr_in6 , sin6_addr ), from_zval_write_sin6_addr , to_zval_read_sin6_addr },
640
+ {"port" , sizeof ("port" ), false , offsetof(struct sockaddr_in6 , sin6_port ), from_zval_write_net_uint16 , to_zval_read_net_uint16 },
641
+ {"flowinfo" , sizeof ("flowinfo" ), false , offsetof(struct sockaddr_in6 , sin6_flowinfo ), from_zval_write_uint32 , to_zval_read_uint32 },
642
+ {"scope_id" , sizeof ("scope_id" ), false , offsetof(struct sockaddr_in6 , sin6_scope_id ), from_zval_write_uint32 , to_zval_read_uint32 },
643
643
{0 }
644
644
};
645
645
static void from_zval_write_sockaddr_in6 (const zval * container , char * sockaddr6 , ser_context * ctx )
@@ -1269,10 +1269,11 @@ static void from_zval_write_ifindex(const zval *zv, char *uinteger, ser_context
1269
1269
#elif defined(SIOCGIFINDEX )
1270
1270
{
1271
1271
struct ifreq ifr ;
1272
- if (strlcpy (ifr .ifr_name , ZSTR_VAL (str ), sizeof (ifr .ifr_name ))
1273
- >= sizeof (ifr .ifr_name )) {
1272
+ if (ZSTR_LEN (str ) >= sizeof (ifr .ifr_name )) {
1274
1273
do_from_zval_err (ctx , "the interface name \"%s\" is too large " , ZSTR_VAL (str ));
1275
- } else if (ioctl (ctx -> sock -> bsd_socket , SIOCGIFINDEX , & ifr ) < 0 ) {
1274
+ }
1275
+ memcpy (ifr .ifr_name , ZSTR_VAL (str ), ZSTR_LEN (str ) + 1 );
1276
+ if (ioctl (ctx -> sock -> bsd_socket , SIOCGIFINDEX , & ifr ) < 0 ) {
1276
1277
if (errno == ENODEV ) {
1277
1278
do_from_zval_err (ctx , "no interface with name \"%s\" could be "
1278
1279
"found" , ZSTR_VAL (str ));
@@ -1301,8 +1302,8 @@ static void from_zval_write_ifindex(const zval *zv, char *uinteger, ser_context
1301
1302
1302
1303
/* CONVERSIONS for struct in6_pktinfo */
1303
1304
static const field_descriptor descriptors_in6_pktinfo [] = {
1304
- {"addr" , sizeof ("addr" ), 1 , offsetof(struct in6_pktinfo , ipi6_addr ), from_zval_write_sin6_addr , to_zval_read_sin6_addr },
1305
- {"ifindex" , sizeof ("ifindex" ), 1 , offsetof(struct in6_pktinfo , ipi6_ifindex ), from_zval_write_ifindex , to_zval_read_unsigned },
1305
+ {"addr" , sizeof ("addr" ), true , offsetof(struct in6_pktinfo , ipi6_addr ), from_zval_write_sin6_addr , to_zval_read_sin6_addr },
1306
+ {"ifindex" , sizeof ("ifindex" ), true , offsetof(struct in6_pktinfo , ipi6_ifindex ), from_zval_write_ifindex , to_zval_read_unsigned },
1306
1307
{0 }
1307
1308
};
1308
1309
void from_zval_write_in6_pktinfo (const zval * container , char * in6_pktinfo_c , ser_context * ctx )
@@ -1321,25 +1322,25 @@ void to_zval_read_in6_pktinfo(const char *data, zval *zv, res_context *ctx)
1321
1322
#if defined(SO_PASSCRED ) || defined(LOCAL_CREDS_PERSISTENT ) || defined(LOCAL_CREDS )
1322
1323
static const field_descriptor descriptors_ucred [] = {
1323
1324
#if defined(LOCAL_CREDS_PERSISTENT )
1324
- {"pid" , sizeof ("pid" ), 1 , offsetof(struct sockcred2 , sc_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1325
- {"uid" , sizeof ("uid" ), 1 , offsetof(struct sockcred2 , sc_euid ), from_zval_write_uid_t , to_zval_read_uid_t },
1325
+ {"pid" , sizeof ("pid" ), true , offsetof(struct sockcred2 , sc_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1326
+ {"uid" , sizeof ("uid" ), true , offsetof(struct sockcred2 , sc_euid ), from_zval_write_uid_t , to_zval_read_uid_t },
1326
1327
/* the type gid_t is the same as uid_t: */
1327
- {"gid" , sizeof ("gid" ), 1 , offsetof(struct sockcred2 , sc_egid ), from_zval_write_uid_t , to_zval_read_uid_t },
1328
+ {"gid" , sizeof ("gid" ), true , offsetof(struct sockcred2 , sc_egid ), from_zval_write_uid_t , to_zval_read_uid_t },
1328
1329
#elif defined(LOCAL_CREDS )
1329
- {"pid" , sizeof ("pid" ), 1 , offsetof(struct sockcred , sc_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1330
- {"uid" , sizeof ("uid" ), 1 , offsetof(struct sockcred , sc_euid ), from_zval_write_uid_t , to_zval_read_uid_t },
1330
+ {"pid" , sizeof ("pid" ), true , offsetof(struct sockcred , sc_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1331
+ {"uid" , sizeof ("uid" ), true , offsetof(struct sockcred , sc_euid ), from_zval_write_uid_t , to_zval_read_uid_t },
1331
1332
/* the type gid_t is the same as uid_t: */
1332
- {"gid" , sizeof ("gid" ), 1 , offsetof(struct sockcred , sc_egid ), from_zval_write_uid_t , to_zval_read_uid_t },
1333
+ {"gid" , sizeof ("gid" ), true , offsetof(struct sockcred , sc_egid ), from_zval_write_uid_t , to_zval_read_uid_t },
1333
1334
#elif defined(HAVE_STRUCT_CMSGCRED )
1334
- {"pid" , sizeof ("pid" ), 1 , offsetof(struct cmsgcred , cmcred_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1335
- {"uid" , sizeof ("uid" ), 1 , offsetof(struct cmsgcred , cmcred_uid ), from_zval_write_uid_t , to_zval_read_uid_t },
1335
+ {"pid" , sizeof ("pid" ), true , offsetof(struct cmsgcred , cmcred_pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1336
+ {"uid" , sizeof ("uid" ), true , offsetof(struct cmsgcred , cmcred_uid ), from_zval_write_uid_t , to_zval_read_uid_t },
1336
1337
/* assume the type gid_t is the same as uid_t: */
1337
- {"gid" , sizeof ("gid" ), 1 , offsetof(struct cmsgcred , cmcred_gid ), from_zval_write_uid_t , to_zval_read_uid_t },
1338
+ {"gid" , sizeof ("gid" ), true , offsetof(struct cmsgcred , cmcred_gid ), from_zval_write_uid_t , to_zval_read_uid_t },
1338
1339
#elif defined(SO_PASSCRED )
1339
- {"pid" , sizeof ("pid" ), 1 , offsetof(struct ucred , pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1340
- {"uid" , sizeof ("uid" ), 1 , offsetof(struct ucred , uid ), from_zval_write_uid_t , to_zval_read_uid_t },
1340
+ {"pid" , sizeof ("pid" ), true , offsetof(struct ucred , pid ), from_zval_write_pid_t , to_zval_read_pid_t },
1341
+ {"uid" , sizeof ("uid" ), true , offsetof(struct ucred , uid ), from_zval_write_uid_t , to_zval_read_uid_t },
1341
1342
/* assume the type gid_t is the same as uid_t: */
1342
- {"gid" , sizeof ("gid" ), 1 , offsetof(struct ucred , gid ), from_zval_write_uid_t , to_zval_read_uid_t },
1343
+ {"gid" , sizeof ("gid" ), true , offsetof(struct ucred , gid ), from_zval_write_uid_t , to_zval_read_uid_t },
1343
1344
#endif
1344
1345
{0 }
1345
1346
};
0 commit comments