Lines Matching refs:ctx

108 static int param_get_bool(void *ctx, const char *key, int def)  in param_get_bool()  argument
111 if ((elem = zend_hash_str_find_ptr(ctx, key, strlen(key))) != NULL) { in param_get_bool()
119 static inline void *accounted_emalloc(size_t alloc_size, ser_context *ctx) in accounted_emalloc() argument
122 zend_llist_add_element(&ctx->allocations, &ret); in accounted_emalloc()
125 static inline void *accounted_ecalloc(size_t nmemb, size_t alloc_size, ser_context *ctx) in accounted_ecalloc() argument
128 zend_llist_add_element(&ctx->allocations, &ret); in accounted_ecalloc()
131 …line void *accounted_safe_ecalloc(size_t nmemb, size_t alloc_size, size_t offset, ser_context *ctx) in accounted_safe_ecalloc() argument
135 zend_llist_add_element(&ctx->allocations, &ret); in accounted_safe_ecalloc()
182 static void do_from_zval_err(ser_context *ctx, const char *fmt, ...) in do_from_zval_err() argument
187 do_from_to_zval_err(&ctx->err, &ctx->keys, "user", fmt, ap); in do_from_zval_err()
191 static void do_to_zval_err(res_context *ctx, const char *fmt, ...) in do_to_zval_err() argument
196 do_from_to_zval_err(&ctx->err, &ctx->keys, "native", fmt, ap); in do_to_zval_err()
217 void (*func)(zval *elem, unsigned i, void **args, ser_context *ctx), in from_array_iterate() argument
219 ser_context *ctx) in from_array_iterate()
232 zend_llist_add_element(&ctx->keys, &bufp); in from_array_iterate()
234 func(elem, i, args, ctx); in from_array_iterate()
236 zend_llist_remove_tail(&ctx->keys); in from_array_iterate()
237 if (ctx->err.has_error) { in from_array_iterate()
250 ser_context *ctx) in from_zval_write_aggregation() argument
256 do_from_zval_err(ctx, "%s", "expected an array here"); in from_zval_write_aggregation()
259 for (descr = descriptors; descr->name != NULL && !ctx->err.has_error; descr++) { in from_zval_write_aggregation()
264 do_from_zval_err(ctx, "No information on how to convert value " in from_zval_write_aggregation()
269 zend_llist_add_element(&ctx->keys, (void*)&descr->name); in from_zval_write_aggregation()
270 descr->from_zval(elem, ((char*)structure) + descr->field_offset, ctx); in from_zval_write_aggregation()
271 zend_llist_remove_tail(&ctx->keys); in from_zval_write_aggregation()
274 do_from_zval_err(ctx, "The key '%s' is required", descr->name); in from_zval_write_aggregation()
282 res_context *ctx) in to_zval_read_aggregation() argument
289 for (descr = descriptors; descr->name != NULL && !ctx->err.has_error; descr++) { in to_zval_read_aggregation()
293 do_to_zval_err(ctx, "No information on how to convert native " in to_zval_read_aggregation()
301 zend_llist_add_element(&ctx->keys, (void*)&descr->name); in to_zval_read_aggregation()
302 descr->to_zval(structure + descr->field_offset, new_zv, ctx); in to_zval_read_aggregation()
303 zend_llist_remove_tail(&ctx->keys); in to_zval_read_aggregation()
308 static zend_long from_zval_integer_common(const zval *arr_value, ser_context *ctx) in from_zval_integer_common() argument
337 ctx->err.has_error = 1; in from_zval_integer_common()
354 do_from_zval_err(ctx, "expected an integer, but got a non numeric " in from_zval_integer_common()
360 do_from_zval_err(ctx, "%s", "expected an integer, either of a PHP " in from_zval_integer_common()
369 void from_zval_write_int(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_int() argument
374 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_int()
375 if (ctx->err.has_error) { in from_zval_write_int()
380 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_int()
388 static void from_zval_write_uint32(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_uint32() argument
393 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_uint32()
394 if (ctx->err.has_error) { in from_zval_write_uint32()
399 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_uint32()
407 static void from_zval_write_net_uint16(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_net_uint16() argument
412 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_net_uint16()
413 if (ctx->err.has_error) { in from_zval_write_net_uint16()
418 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_net_uint16()
426 static void from_zval_write_sa_family(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_sa_family() argument
431 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_sa_family()
432 if (ctx->err.has_error) { in from_zval_write_sa_family()
437 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_sa_family()
447 static void from_zval_write_pid_t(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_pid_t() argument
452 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_pid_t()
453 if (ctx->err.has_error) { in from_zval_write_pid_t()
458 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_pid_t()
466 static void from_zval_write_uid_t(const zval *arr_value, char *field, ser_context *ctx) in from_zval_write_uid_t() argument
471 lval = from_zval_integer_common(arr_value, ctx); in from_zval_write_uid_t()
472 if (ctx->err.has_error) { in from_zval_write_uid_t()
479 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_uid_t()
485 do_from_zval_err(ctx, "%s", "given PHP integer is out of bounds " in from_zval_write_uid_t()
496 void to_zval_read_int(const char *data, zval *zv, res_context *ctx) in to_zval_read_int() argument
503 static void to_zval_read_net_uint16(const char *data, zval *zv, res_context *ctx) in to_zval_read_net_uint16() argument
510 static void to_zval_read_sa_family(const char *data, zval *zv, res_context *ctx) in to_zval_read_sa_family() argument
518 static void to_zval_read_unsigned(const char *data, zval *zv, res_context *ctx) in to_zval_read_unsigned() argument
525 static void to_zval_read_uint32(const char *data, zval *zv, res_context *ctx) in to_zval_read_uint32() argument
534 static void to_zval_read_pid_t(const char *data, zval *zv, res_context *ctx) in to_zval_read_pid_t() argument
541 static void to_zval_read_uid_t(const char *data, zval *zv, res_context *ctx) in to_zval_read_uid_t() argument
551 static void from_zval_write_sin_addr(const zval *zaddr_str, char *inaddr, ser_context *ctx) in from_zval_write_sin_addr() argument
558 res = php_set_inet_addr(&saddr, ZSTR_VAL(addr_str), ctx->sock); in from_zval_write_sin_addr()
563 do_from_zval_err(ctx, "could not resolve address '%s' to get an AF_INET " in from_zval_write_sin_addr()
569 static void to_zval_read_sin_addr(const char *data, zval *zv, res_context *ctx) in to_zval_read_sin_addr() argument
579 do_to_zval_err(ctx, "could not convert IPv4 address to string " in to_zval_read_sin_addr()
592 static void from_zval_write_sockaddr_in(const zval *container, char *sockaddr, ser_context *ctx) in from_zval_write_sockaddr_in() argument
594 from_zval_write_aggregation(container, sockaddr, descriptors_sockaddr_in, ctx); in from_zval_write_sockaddr_in()
596 static void to_zval_read_sockaddr_in(const char *data, zval *zv, res_context *ctx) in to_zval_read_sockaddr_in() argument
598 to_zval_read_aggregation(data, zv, descriptors_sockaddr_in, ctx); in to_zval_read_sockaddr_in()
601 static void from_zval_write_sin6_addr(const zval *zaddr_str, char *addr6, ser_context *ctx) in from_zval_write_sin6_addr() argument
608 res = php_set_inet6_addr(&saddr6, ZSTR_VAL(addr_str), ctx->sock); in from_zval_write_sin6_addr()
613 do_from_zval_err(ctx, "could not resolve address '%s' to get an AF_INET6 " in from_zval_write_sin6_addr()
619 static void to_zval_read_sin6_addr(const char *data, zval *zv, res_context *ctx) in to_zval_read_sin6_addr() argument
630 do_to_zval_err(ctx, "could not convert IPv6 address to string " in to_zval_read_sin6_addr()
645 static void from_zval_write_sockaddr_in6(const zval *container, char *sockaddr6, ser_context *ctx) in from_zval_write_sockaddr_in6() argument
647 from_zval_write_aggregation(container, sockaddr6, descriptors_sockaddr_in6, ctx); in from_zval_write_sockaddr_in6()
649 static void to_zval_read_sockaddr_in6(const char *data, zval *zv, res_context *ctx) in to_zval_read_sockaddr_in6() argument
651 to_zval_read_aggregation(data, zv, descriptors_sockaddr_in6, ctx); in to_zval_read_sockaddr_in6()
654 static void from_zval_write_sun_path(const zval *path, char *sockaddr_un_c, ser_context *ctx) in from_zval_write_sun_path() argument
665 do_from_zval_err(ctx, "%s", "the path is cannot be empty"); in from_zval_write_sun_path()
670 do_from_zval_err(ctx, "the path is too long, the maximum permitted " in from_zval_write_sun_path()
681 static void to_zval_read_sun_path(const char *data, zval *zv, res_context *ctx) { in to_zval_read_sun_path() argument
687 do_to_zval_err(ctx, "could not find a NUL in the path"); in to_zval_read_sun_path()
698 static void from_zval_write_sockaddr_un(const zval *container, char *sockaddr, ser_context *ctx) in from_zval_write_sockaddr_un() argument
700 from_zval_write_aggregation(container, sockaddr, descriptors_sockaddr_un, ctx); in from_zval_write_sockaddr_un()
702 static void to_zval_read_sockaddr_un(const char *data, zval *zv, res_context *ctx) in to_zval_read_sockaddr_un() argument
704 to_zval_read_aggregation(data, zv, descriptors_sockaddr_un, ctx); in to_zval_read_sockaddr_un()
709 ser_context *ctx) in from_zval_write_sockaddr_aux() argument
719 do_from_zval_err(ctx, "%s", "expected an array here"); in from_zval_write_sockaddr_aux()
723 fill_sockaddr = param_get_bool(ctx, KEY_FILL_SOCKADDR, 1); in from_zval_write_sockaddr_aux()
728 zend_llist_add_element(&ctx->keys, &node); in from_zval_write_sockaddr_aux()
730 from_zval_write_int(elem, (char*)&family, ctx); in from_zval_write_sockaddr_aux()
731 zend_llist_remove_tail(&ctx->keys); in from_zval_write_sockaddr_aux()
733 if (UNEXPECTED(ctx->err.has_error)) { in from_zval_write_sockaddr_aux()
737 family = ctx->sock->type; in from_zval_write_sockaddr_aux()
743 if (ctx->sock->type != AF_INET && ctx->sock->type != AF_INET6) { in from_zval_write_sockaddr_aux()
744 do_from_zval_err(ctx, "the specified family (number %d) is not " in from_zval_write_sockaddr_aux()
748 *sockaddr_ptr = accounted_ecalloc(1, sizeof(struct sockaddr_in), ctx); in from_zval_write_sockaddr_aux()
751 from_zval_write_sockaddr_in(container, (char*)*sockaddr_ptr, ctx); in from_zval_write_sockaddr_aux()
758 if (ctx->sock->type != AF_INET6) { in from_zval_write_sockaddr_aux()
759 do_from_zval_err(ctx, "the specified family (AF_INET6) is not " in from_zval_write_sockaddr_aux()
763 *sockaddr_ptr = accounted_ecalloc(1, sizeof(struct sockaddr_in6), ctx); in from_zval_write_sockaddr_aux()
766 from_zval_write_sockaddr_in6(container, (char*)*sockaddr_ptr, ctx); in from_zval_write_sockaddr_aux()
773 if (ctx->sock->type != AF_UNIX) { in from_zval_write_sockaddr_aux()
774 do_from_zval_err(ctx, "the specified family (AF_UNIX) is not " in from_zval_write_sockaddr_aux()
778 *sockaddr_ptr = accounted_ecalloc(1, sizeof(struct sockaddr_un), ctx); in from_zval_write_sockaddr_aux()
782 from_zval_write_sockaddr_un(container, (char*)*sockaddr_ptr, ctx); in from_zval_write_sockaddr_aux()
799 do_from_zval_err(ctx, "%s", "the only families currently supported are " in from_zval_write_sockaddr_aux()
804 static void to_zval_read_sockaddr_aux(const char *sockaddr_c, zval *zv, res_context *ctx) in to_zval_read_sockaddr_aux() argument
817 to_zval_read_sockaddr_in(sockaddr_c, zv, ctx); in to_zval_read_sockaddr_aux()
822 to_zval_read_sockaddr_in6(sockaddr_c, zv, ctx); in to_zval_read_sockaddr_aux()
827 to_zval_read_sockaddr_un(sockaddr_c, zv, ctx); in to_zval_read_sockaddr_aux()
831 do_to_zval_err(ctx, "cannot read struct sockaddr with family %d; " in to_zval_read_sockaddr_aux()
853 ser_context *ctx) in from_zval_write_control() argument
876 from_zval_write_aggregation(arr, (char *)&level, descriptor_level, ctx); in from_zval_write_control()
877 if (ctx->err.has_error) { in from_zval_write_control()
880 from_zval_write_aggregation(arr, (char *)&type, descriptor_type, ctx); in from_zval_write_control()
881 if (ctx->err.has_error) { in from_zval_write_control()
887 do_from_zval_err(ctx, "cmsghdr with level %d and type %d not supported", in from_zval_write_control()
896 do_from_zval_err(ctx, "cmsghdr should have a 'data' element here"); in from_zval_write_control()
899 data_len = entry->calc_space(data_elem, ctx); in from_zval_write_control()
900 if (ctx->err.has_error) { in from_zval_write_control()
923 from_zval_write_aggregation(arr, (char*)CMSG_DATA(cmsghdr), descriptor_data, ctx); in from_zval_write_control()
927 static void from_zval_write_control_array(const zval *arr, char *msghdr_c, ser_context *ctx) in from_zval_write_control_array() argument
941 do_from_zval_err(ctx, "%s", "expected an array here"); in from_zval_write_control_array()
951 control_buf = accounted_safe_ecalloc(num_elems, CMSG_SPACE(20), 0, ctx); in from_zval_write_control_array()
952 alloc = ctx->allocations.tail; in from_zval_write_control_array()
957 if (ctx->err.has_error) { in from_zval_write_control_array()
964 zend_llist_add_element(&ctx->keys, &bufp); in from_zval_write_control_array()
966 from_zval_write_control(elem, &control_buf, alloc, &control_len, &cur_offset, ctx); in from_zval_write_control_array()
968 zend_llist_remove_tail(&ctx->keys); in from_zval_write_control_array()
974 static void to_zval_read_cmsg_data(const char *cmsghdr_c, zval *zv, res_context *ctx) in to_zval_read_cmsg_data() argument
983 do_to_zval_err(ctx, "cmsghdr with level %d and type %d not supported", in to_zval_read_cmsg_data()
988 do_to_zval_err(ctx, "the cmsghdr structure is unexpectedly small; " in to_zval_read_cmsg_data()
996 if (zend_hash_str_add_ptr(&ctx->params, KEY_CMSG_LEN, sizeof(KEY_CMSG_LEN) - 1, len_p) == NULL) { in to_zval_read_cmsg_data()
997 do_to_zval_err(ctx, "%s", "could not set parameter " KEY_CMSG_LEN); in to_zval_read_cmsg_data()
1001 entry->to_array((const char *)CMSG_DATA(cmsg), zv, ctx); in to_zval_read_cmsg_data()
1003 zend_hash_str_del(&ctx->params, KEY_CMSG_LEN, sizeof(KEY_CMSG_LEN) - 1); in to_zval_read_cmsg_data()
1005 static void to_zval_read_control(const char *cmsghdr_c, zval *zv, res_context *ctx) in to_zval_read_control() argument
1016 to_zval_read_aggregation(cmsghdr_c, zv, descriptors, ctx); in to_zval_read_control()
1018 static void to_zval_read_control_array(const char *msghdr_c, zval *zv, res_context *ctx) in to_zval_read_control_array() argument
1029 cmsg != NULL && !ctx->err.has_error; in to_zval_read_control_array()
1039 zend_llist_add_element(&ctx->keys, &bufp); in to_zval_read_control_array()
1041 to_zval_read_control((const char *)cmsg, elem, ctx); in to_zval_read_control_array()
1043 zend_llist_remove_tail(&ctx->keys); in to_zval_read_control_array()
1048 static void from_zval_write_name(const zval *zname_arr, char *msghdr_c, ser_context *ctx) in from_zval_write_name() argument
1054 from_zval_write_sockaddr_aux(zname_arr, &sockaddr, &sockaddr_len, ctx); in from_zval_write_name()
1059 static void to_zval_read_name(const char *sockaddr_p, zval *zv, res_context *ctx) in to_zval_read_name() argument
1065 to_zval_read_sockaddr_aux(name, zv, ctx); in to_zval_read_name()
1068 static void from_zval_write_msghdr_buffer_size(const zval *elem, char *msghdr_c, ser_context *ctx) in from_zval_write_msghdr_buffer_size() argument
1073 lval = from_zval_integer_common(elem, ctx); in from_zval_write_msghdr_buffer_size()
1074 if (ctx->err.has_error) { in from_zval_write_msghdr_buffer_size()
1079 do_from_zval_err(ctx, "the buffer size must be between 1 and " ZEND_LONG_FMT "; " in from_zval_write_msghdr_buffer_size()
1085 msghdr->msg_iov = accounted_emalloc(sizeof(*msghdr->msg_iov) * 1, ctx); in from_zval_write_msghdr_buffer_size()
1086 msghdr->msg_iov[0].iov_base = accounted_emalloc((size_t)lval, ctx); in from_zval_write_msghdr_buffer_size()
1089 static void from_zval_write_iov_array_aux(zval *elem, unsigned i, void **args, ser_context *ctx) in from_zval_write_iov_array_aux() argument
1096 msg->msg_iov[i - 1].iov_base = accounted_emalloc(ZSTR_LEN(str), ctx); in from_zval_write_iov_array_aux()
1102 static void from_zval_write_iov_array(const zval *arr, char *msghdr_c, ser_context *ctx) in from_zval_write_iov_array() argument
1108 do_from_zval_err(ctx, "%s", "expected an array here"); in from_zval_write_iov_array()
1117 msg->msg_iov = accounted_safe_ecalloc(num_elem, sizeof *msg->msg_iov, 0, ctx); in from_zval_write_iov_array()
1120 from_array_iterate(arr, from_zval_write_iov_array_aux, (void**)&msg, ctx); in from_zval_write_iov_array()
1122 static void from_zval_write_controllen(const zval *elem, char *msghdr_c, ser_context *ctx) in from_zval_write_controllen() argument
1130 from_zval_write_uint32(elem, (char*)&len, ctx); in from_zval_write_controllen()
1131 if (ctx->err.has_error) { in from_zval_write_controllen()
1135 do_from_zval_err(ctx, "controllen cannot be 0"); in from_zval_write_controllen()
1138 msghdr->msg_control = accounted_emalloc(len, ctx); in from_zval_write_controllen()
1141 void from_zval_write_msghdr_send(const zval *container, char *msghdr_c, ser_context *ctx) in from_zval_write_msghdr_send() argument
1150 from_zval_write_aggregation(container, msghdr_c, descriptors, ctx); in from_zval_write_msghdr_send()
1152 void from_zval_write_msghdr_recv(const zval *container, char *msghdr_c, ser_context *ctx) in from_zval_write_msghdr_recv() argument
1178 …if (zend_hash_str_add_ptr(&ctx->params, KEY_FILL_SOCKADDR, sizeof(KEY_FILL_SOCKADDR) - 1, (void *)… in from_zval_write_msghdr_recv()
1179 do_from_zval_err(ctx, "could not add fill_sockaddr; this is a bug"); in from_zval_write_msghdr_recv()
1183 from_zval_write_aggregation(container, msghdr_c, descriptors, ctx); in from_zval_write_msghdr_recv()
1185 zend_hash_str_del(&ctx->params, KEY_FILL_SOCKADDR, sizeof(KEY_FILL_SOCKADDR) - 1); in from_zval_write_msghdr_recv()
1186 if (ctx->err.has_error) { in from_zval_write_msghdr_recv()
1192 msghdr->msg_iov = accounted_emalloc(sizeof(*msghdr->msg_iov) * 1, ctx); in from_zval_write_msghdr_recv()
1193 msghdr->msg_iov[0].iov_base = accounted_emalloc((size_t)DEFAULT_BUFF_SIZE, ctx); in from_zval_write_msghdr_recv()
1198 static void to_zval_read_iov(const char *msghdr_c, zval *zv, res_context *ctx) in to_zval_read_iov() argument
1207 do_to_zval_err(ctx, "unexpectedly large value for iov_len: %lu", in to_zval_read_iov()
1212 …if ((recvmsg_ret = zend_hash_str_find_ptr(&ctx->params, KEY_RECVMSG_RET, sizeof(KEY_RECVMSG_RET) -… in to_zval_read_iov()
1213 do_to_zval_err(ctx, "recvmsg_ret not found in params. This is a bug"); in to_zval_read_iov()
1231 void to_zval_read_msghdr(const char *msghdr_c, zval *zv, res_context *ctx) in to_zval_read_msghdr() argument
1243 to_zval_read_aggregation(msghdr_c, zv, descriptors, ctx); in to_zval_read_msghdr()
1248 static void from_zval_write_ifindex(const zval *zv, char *uinteger, ser_context *ctx) in from_zval_write_ifindex() argument
1254 do_from_zval_err(ctx, "the interface index cannot be negative or " in from_zval_write_ifindex()
1267 do_from_zval_err(ctx, "no interface with name \"%s\" could be found", ZSTR_VAL(str)); in from_zval_write_ifindex()
1274 do_from_zval_err(ctx, "the interface name \"%s\" is too large ", ZSTR_VAL(str)); in from_zval_write_ifindex()
1275 } else if (ioctl(ctx->sock->bsd_socket, SIOCGIFINDEX, &ifr) < 0) { in from_zval_write_ifindex()
1277 do_from_zval_err(ctx, "no interface with name \"%s\" could be " in from_zval_write_ifindex()
1280 do_from_zval_err(ctx, "error fetching interface index for " in from_zval_write_ifindex()
1289 do_from_zval_err(ctx, in from_zval_write_ifindex()
1297 if (!ctx->err.has_error) { in from_zval_write_ifindex()
1308 void from_zval_write_in6_pktinfo(const zval *container, char *in6_pktinfo_c, ser_context *ctx) in from_zval_write_in6_pktinfo() argument
1310 from_zval_write_aggregation(container, in6_pktinfo_c, descriptors_in6_pktinfo, ctx); in from_zval_write_in6_pktinfo()
1312 void to_zval_read_in6_pktinfo(const char *data, zval *zv, res_context *ctx) in to_zval_read_in6_pktinfo() argument
1316 to_zval_read_aggregation(data, zv, descriptors_in6_pktinfo, ctx); in to_zval_read_in6_pktinfo()
1346 void from_zval_write_ucred(const zval *container, char *ucred_c, ser_context *ctx) in from_zval_write_ucred() argument
1348 from_zval_write_aggregation(container, ucred_c, descriptors_ucred, ctx); in from_zval_write_ucred()
1350 void to_zval_read_ucred(const char *data, zval *zv, res_context *ctx) in to_zval_read_ucred() argument
1354 to_zval_read_aggregation(data, zv, descriptors_ucred, ctx); in to_zval_read_ucred()
1360 size_t calculate_scm_rights_space(const zval *arr, ser_context *ctx) in calculate_scm_rights_space() argument
1365 do_from_zval_err(ctx, "%s", "expected an array here"); in calculate_scm_rights_space()
1371 do_from_zval_err(ctx, "%s", "expected at least one element in this array"); in calculate_scm_rights_space()
1377 static void from_zval_write_fd_array_aux(zval *elem, unsigned i, void **args, ser_context *ctx) in from_zval_write_fd_array_aux() argument
1384 do_from_zval_err(ctx, "socket is already closed"); in from_zval_write_fd_array_aux()
1397 do_from_zval_err(ctx, "resource is not a stream"); in from_zval_write_fd_array_aux()
1402 do_from_zval_err(ctx, "cast stream to file descriptor failed"); in from_zval_write_fd_array_aux()
1406 do_from_zval_err(ctx, "expected a Socket object or a stream resource"); in from_zval_write_fd_array_aux()
1409 void from_zval_write_fd_array(const zval *arr, char *int_arr, ser_context *ctx) in from_zval_write_fd_array() argument
1412 do_from_zval_err(ctx, "%s", "expected an array here"); in from_zval_write_fd_array()
1416 from_array_iterate(arr, &from_zval_write_fd_array_aux, (void**)&int_arr, ctx); in from_zval_write_fd_array()
1418 void to_zval_read_fd_array(const char *data, zval *zv, res_context *ctx) in to_zval_read_fd_array() argument
1429 …if ((cmsg_len = zend_hash_str_find_ptr(&ctx->params, KEY_CMSG_LEN, sizeof(KEY_CMSG_LEN) - 1)) == N… in to_zval_read_fd_array()
1430 do_to_zval_err(ctx, "could not get value of parameter " KEY_CMSG_LEN); in to_zval_read_fd_array()
1435 do_to_zval_err(ctx, "length of cmsg is smaller than its data member " in to_zval_read_fd_array()
1452 do_to_zval_err(ctx, "error creating resource for received file " in to_zval_read_fd_array()
1484 ser_context ctx; in from_zval_run_conversions() local
1493 memset(&ctx, 0, sizeof(ctx)); in from_zval_run_conversions()
1494 zend_hash_init(&ctx.params, 8, NULL, NULL, 0); in from_zval_run_conversions()
1495 zend_llist_init(&ctx.keys, sizeof(const char *), NULL, 0); in from_zval_run_conversions()
1496 zend_llist_init(&ctx.allocations, sizeof(void *), &free_from_zval_allocation, 0); in from_zval_run_conversions()
1497 ctx.sock = sock; in from_zval_run_conversions()
1501 zend_llist_add_element(&ctx.keys, &top_name); in from_zval_run_conversions()
1502 zend_llist_add_element(&ctx.allocations, &structure); in from_zval_run_conversions()
1505 writer(container, structure, &ctx); in from_zval_run_conversions()
1507 if (ctx.err.has_error) { in from_zval_run_conversions()
1508 zend_llist_destroy(&ctx.allocations); /* deallocates structure as well */ in from_zval_run_conversions()
1510 *err = ctx.err; in from_zval_run_conversions()
1513 **allocations = ctx.allocations; in from_zval_run_conversions()
1516 zend_llist_destroy(&ctx.keys); in from_zval_run_conversions()
1517 zend_hash_destroy(&ctx.params); in from_zval_run_conversions()
1527 res_context ctx; in to_zval_run_conversions() local
1534 memset(&ctx, 0, sizeof(ctx)); in to_zval_run_conversions()
1535 zend_llist_init(&ctx.keys, sizeof(const char *), NULL, 0); in to_zval_run_conversions()
1536 zend_llist_add_element(&ctx.keys, &top_name); in to_zval_run_conversions()
1538 zend_hash_init(&ctx.params, 8, NULL, NULL, 0); in to_zval_run_conversions()
1540 zend_hash_str_update_ptr(&ctx.params, kv->key, kv->key_size - 1, kv->value); in to_zval_run_conversions()
1545 reader(structure, zv, &ctx); in to_zval_run_conversions()
1547 if (ctx.err.has_error) { in to_zval_run_conversions()
1550 *err = ctx.err; in to_zval_run_conversions()
1553 zend_llist_destroy(&ctx.keys); in to_zval_run_conversions()
1554 zend_hash_destroy(&ctx.params); in to_zval_run_conversions()