提交 37564b47 编写于 作者: J Jim Fehlig

xen: fix parsing xend http response

Commit df36af58 broke parsing of http response from xend.  The prior
use of atoi() would happily parse e.g. a string containing "200 OK\r\n",
whereas virStrToLong_i() will fail when called with a NULL end_ptr.
Change the calls to virStrToLong_i() to provide a non-NULL end_ptr.
上级 7e4dcf3a
...@@ -282,6 +282,7 @@ xend_req(int fd, char **content) ...@@ -282,6 +282,7 @@ xend_req(int fd, char **content)
size_t buffer_size = 4096; size_t buffer_size = 4096;
int content_length = 0; int content_length = 0;
int retcode = 0; int retcode = 0;
char *end_ptr;
if (VIR_ALLOC_N(buffer, buffer_size) < 0) if (VIR_ALLOC_N(buffer, buffer_size) < 0)
return -1; return -1;
...@@ -291,13 +292,13 @@ xend_req(int fd, char **content) ...@@ -291,13 +292,13 @@ xend_req(int fd, char **content)
break; break;
if (istartswith(buffer, "Content-Length: ")) { if (istartswith(buffer, "Content-Length: ")) {
if (virStrToLong_i(buffer + 16, NULL, 10, &content_length) < 0) { if (virStrToLong_i(buffer + 16, &end_ptr, 10, &content_length) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to parse Xend response content length")); _("failed to parse Xend response content length"));
return -1; return -1;
} }
} else if (istartswith(buffer, "HTTP/1.1 ")) { } else if (istartswith(buffer, "HTTP/1.1 ")) {
if (virStrToLong_i(buffer + 9, NULL, 10, &retcode) < 0) { if (virStrToLong_i(buffer + 9, &end_ptr, 10, &retcode) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to parse Xend response return code")); _("failed to parse Xend response return code"));
return -1; return -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册