[Libguestfs] [PATCH] Fix lossy conversion of Content-Length
Richard W.M. Jones
rjones at redhat.com
Thu Jan 9 13:07:11 UTC 2020
On Wed, Jan 08, 2020 at 07:19:56AM -0600, Eric Blake wrote:
> On 1/7/20 4:13 AM, Adrian Ambrożewicz wrote:
> >Actual variable holding content length is int64_t, but it was assigned
> >by explicit cast to size_t. On 32-bit systems it's a lossy conversion,
> >so it was replaced by casting to int64_t instead.
> >
> >Signed-off-by: Adrian Ambrożewicz <adrian.ambrozewicz at linux.intel.com>
> >---
> > plugins/curl/curl.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/plugins/curl/curl.c b/plugins/curl/curl.c
> >index 031bd32..fe1330e 100644
> >--- a/plugins/curl/curl.c
> >+++ b/plugins/curl/curl.c
> >@@ -389,7 +389,7 @@ curl_open (int readonly)
> > goto err;
> > }
> >
> >- h->exportsize = (size_t) d;
> >+ h->exportsize = (int64_t) d;
>
> Why is a cast needed at all?
> This is C, an implicit conversion
> works just as well.
Present since the initial commit, but not present in the qemu
block/curl.c driver which is where most of this code was derived from,
so I suspect I simply added it "because reasons".
But even more to the point, why on earth does the
CURLINFO_CONTENT_LENGTH_DOWNLOAD API return a double! Well it seems
as if they replaced that API with:
https://curl.haxx.se/libcurl/c/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.html
which is what we really ought to use instead. This was added in Curl
7.55.0, released 2 and a half years ago, so I think we ought to use
that instead. Adrian could you write a patch to change over to that
API?
Rich.
> > nbdkit_debug ("content length: %" PRIi64, h->exportsize);
> >
> > if (strncasecmp (url, "http://", strlen ("http://")) == 0 ||
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3226
> Virtualization: qemu.org | libvirt.org
>
> _______________________________________________
> Libguestfs mailing list
> Libguestfs at redhat.com
> https://www.redhat.com/mailman/listinfo/libguestfs
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
More information about the Libguestfs
mailing list