diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index 90a79b83985c5..a6de55106f30f 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -720,6 +720,10 @@ static void from_zval_write_sockaddr_aux(const zval *container, zend_llist_add_element(&ctx->keys, &node); from_zval_write_int(elem, (char*)&family, ctx); zend_llist_remove_tail(&ctx->keys); + + if (UNEXPECTED(ctx->err.has_error)) { + return; + } } else { family = ctx->sock->type; } @@ -1115,7 +1119,10 @@ static void from_zval_write_controllen(const zval *elem, char *msghdr_c, ser_con * this least common denominator */ from_zval_write_uint32(elem, (char*)&len, ctx); - if (!ctx->err.has_error && len == 0) { + if (ctx->err.has_error) { + return; + } + if (len == 0) { do_from_zval_err(ctx, "controllen cannot be 0"); return; }