forked from pool/libvirt
40 lines
1.7 KiB
Diff
40 lines
1.7 KiB
Diff
|
commit 37564b471da7e9080284149f8350241afd448515
|
||
|
Author: Jim Fehlig <jfehlig@suse.com>
|
||
|
Date: Tue Jan 28 18:15:48 2014 -0700
|
||
|
|
||
|
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.
|
||
|
|
||
|
Index: libvirt-1.2.1/src/xen/xend_internal.c
|
||
|
===================================================================
|
||
|
--- libvirt-1.2.1.orig/src/xen/xend_internal.c
|
||
|
+++ libvirt-1.2.1/src/xen/xend_internal.c
|
||
|
@@ -282,6 +282,7 @@ xend_req(int fd, char **content)
|
||
|
size_t buffer_size = 4096;
|
||
|
int content_length = 0;
|
||
|
int retcode = 0;
|
||
|
+ char *end_ptr;
|
||
|
|
||
|
if (VIR_ALLOC_N(buffer, buffer_size) < 0)
|
||
|
return -1;
|
||
|
@@ -291,13 +292,13 @@ xend_req(int fd, char **content)
|
||
|
break;
|
||
|
|
||
|
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",
|
||
|
_("failed to parse Xend response content length"));
|
||
|
return -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",
|
||
|
_("failed to parse Xend response return code"));
|
||
|
return -1;
|