Mageia Bugzilla – Attachment 8522 Details for
Bug 19571
overflow when querying for size with urpmq
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
[patch]
patch using size_t to avoid overflows in RPM querying size
URPM-overflow-use-size-t.patch (text/plain), 1.37 KB, created by
Giuseppe Ghibò
on 2016-10-12 14:43:59 CEST
(
hide
)
Description:
patch using size_t to avoid overflows in RPM querying size
Filename:
MIME Type:
Creator:
Giuseppe Ghibò
Created:
2016-10-12 14:43:59 CEST
Size:
1.37 KB
patch
obsolete
>diff -up URPM-5.07/URPM.xs.size URPM-5.07/URPM.xs >--- URPM-5.07/URPM.xs.size 2016-10-06 02:42:23.388062982 +0200 >+++ URPM-5.07/URPM.xs 2016-10-06 02:45:18.146219008 +0200 >@@ -201,7 +201,7 @@ get_arch(const Header header) { > return headerIsEntry(header, RPMTAG_SOURCERPM) ? get_name(header, RPMTAG_ARCH) : "src"; > } > >-static int >+static size_t > get_int(const Header header, rpmTag tag) { > struct rpmtd_s val; > >@@ -756,8 +756,8 @@ pack_header(const URPM__Package pkg) { > const char *nvr = headerGetAsString(pkg->h, RPMTAG_NVR); > const char *arch = get_arch(pkg->h); > >- p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%d@%d@%s", nvr, arch, >- get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_SIZE), >+ p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%d@%zu@%s", nvr, arch, >+ get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_LONGSIZE), > get_name(pkg->h, RPMTAG_GROUP)); > pkg->info = memcpy(malloc(p-buff), buff, p-buff); > } >diff -up URPM-5.07/URPM.xs.orig URPM-5.07/URPM.xs >--- URPM-5.07/URPM.xs.orig 2016-10-06 02:49:41.883454474 +0200 >+++ URPM-5.07/URPM.xs 2016-10-06 02:50:36.473503212 +0200 >@@ -206,7 +206,7 @@ get_int(const Header header, rpmTag tag) > struct rpmtd_s val; > > headerGet(header, tag, &val, HEADERGET_DEFAULT); >- uint32_t *ep = rpmtdGetUint32(&val); >+ uint64_t *ep = rpmtdGetUint64(&val); > return ep ? *ep : 0; > } >
diff -up URPM-5.07/URPM.xs.size URPM-5.07/URPM.xs --- URPM-5.07/URPM.xs.size 2016-10-06 02:42:23.388062982 +0200 +++ URPM-5.07/URPM.xs 2016-10-06 02:45:18.146219008 +0200 @@ -201,7 +201,7 @@ get_arch(const Header header) { return headerIsEntry(header, RPMTAG_SOURCERPM) ? get_name(header, RPMTAG_ARCH) : "src"; } -static int +static size_t get_int(const Header header, rpmTag tag) { struct rpmtd_s val; @@ -756,8 +756,8 @@ pack_header(const URPM__Package pkg) { const char *nvr = headerGetAsString(pkg->h, RPMTAG_NVR); const char *arch = get_arch(pkg->h); - p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%d@%d@%s", nvr, arch, - get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_SIZE), + p += 1 + snprintf(buff, sizeof(buff), "%s.%s@%d@%zu@%s", nvr, arch, + get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_LONGSIZE), get_name(pkg->h, RPMTAG_GROUP)); pkg->info = memcpy(malloc(p-buff), buff, p-buff); } diff -up URPM-5.07/URPM.xs.orig URPM-5.07/URPM.xs --- URPM-5.07/URPM.xs.orig 2016-10-06 02:49:41.883454474 +0200 +++ URPM-5.07/URPM.xs 2016-10-06 02:50:36.473503212 +0200 @@ -206,7 +206,7 @@ get_int(const Header header, rpmTag tag) struct rpmtd_s val; headerGet(header, tag, &val, HEADERGET_DEFAULT); - uint32_t *ep = rpmtdGetUint32(&val); + uint64_t *ep = rpmtdGetUint64(&val); return ep ? *ep : 0; }
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 19571
:
8522
|
8523
|
8525
|
8528
|
8529
|
8530
|
8531
|
8537
|
8538
|
8539
|
8541
|
8542
|
8543
|
8547
|
8548
|
8549
|
8563
|
8564
|
8565
|
8566