Date: Sun, 22 Aug 2010 23:21:42 +0200 From: Dimitry Andric <dimitry@andric.com> To: =?UTF-8?B?RGFnLUVybGluZyBTbcO4cmdyYXY=?= <des@des.no> Cc: Bruce Cran <bruce@cran.org.uk>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r211304 - head/lib/libutil Message-ID: <4C7194E6.6080708@andric.com> In-Reply-To: <86wrrraqk8.fsf@ds4.des.no> References: <201008141434.o7EEYaSA030301@svn.freebsd.org> <20100815205724.00007e0f@unknown> <86wrrraqk8.fsf@ds4.des.no>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------040200060404010907090506 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 2010-08-16 10:51, Dag-Erling Sm=C3=B8rgrav wrote: > Bruce Cran <bruce@cran.org.uk> writes: >> Somewhat related, there are overflow bugs in humanize_number - for >> example df(1) fails to display space from a 100PB filesystem >> correctly. >=20 > Patch? :) Attached. This makes humanize_number() work properly for all possible int64_t values. It has one significant behaviour change, though: with the original version of humanize_number(), if you used a fixed scale parameter, and the number was larger than the buffer could contain, it would simply stomp over the end of the buffer. With this fix, it will return -1 instead. I hope you agree that is better. :) --------------040200060404010907090506 Content-Type: text/plain; name="humanize-overflow-fix.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="humanize-overflow-fix.diff" ZGlmZiAtLWdpdCBhL2xpYi9saWJ1dGlsL2h1bWFuaXplX251bWJlci5jIGIvbGliL2xpYnV0 aWwvaHVtYW5pemVfbnVtYmVyLmMKaW5kZXggZGU5ODU4Ny4uYTMwNDEzNyAxMDA2NDQKLS0t IGEvbGliL2xpYnV0aWwvaHVtYW5pemVfbnVtYmVyLmMKKysrIGIvbGliL2xpYnV0aWwvaHVt YW5pemVfbnVtYmVyLmMKQEAgLTQyLDEzICs0MiwzNCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Qk Iik7CiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGlidXRpbC5oPgogCitzdGF0 aWMgaW5saW5lIHZvaWQKK2RpdmlkZShpbnQ2NF90IG51bSwgaW50NjRfdCBkZW4sIGludDY0 X3QgKnF1b3RwLCBpbnQ2NF90ICpxdW90cnAsIGludCAqZnJhY3JwKQoreworCWludCBmcmFj OworCisJaWYgKGRlbiA9PSAxKSB7CisJCSpxdW90cCA9ICpxdW90cnAgPSBudW07CisJCSpm cmFjcnAgPSAwOworCX0gZWxzZSB7CisJCSpxdW90cCA9ICpxdW90cnAgPSBudW0gLyBkZW47 CisJCWZyYWMgPSAoNSAqIChudW0gJSBkZW4pKSAvIChkZW4gLyAyKTsKKwkJaWYgKGZyYWMg Pj0gNSkKKwkJCSsrKnF1b3RwOworCQkqZnJhY3JwID0gKDUgKiAobnVtICUgZGVuKSArIGRl biAvIDQpIC8gKGRlbiAvIDIpOworCQlpZiAoKmZyYWNycCA9PSAxMCkgeworCQkJKysqcXVv dHJwOworCQkJKmZyYWNycCA9IDA7CisJCX0KKwl9Cit9CisKIGludAogaHVtYW5pemVfbnVt YmVyKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50NjRfdCBieXRlcywKICAgICBjb25zdCBj aGFyICpzdWZmaXgsIGludCBzY2FsZSwgaW50IGZsYWdzKQogewogCWNvbnN0IGNoYXIgKnBy ZWZpeGVzLCAqc2VwOwotCWludAliLCBpLCByLCBtYXhzY2FsZSwgczEsIHMyLCBzaWduOwot CWludDY0X3QJZGl2aXNvciwgbWF4OworCWludAlpLCByLCBtYXhzY2FsZSwgc2lnbiwgZnJh Y3I7CisJaW50NjRfdAlkaXZpc29yLCBtYXgsIGZ1bGxkaXYsIHF1b3QsIHF1b3RyOwogCXNp emVfdAliYXNlbGVuOwogCiAJYXNzZXJ0KGJ1ZiAhPSBOVUxMKTsKQEAgLTg4LDExICsxMDks MTAgQEAgaHVtYW5pemVfbnVtYmVyKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50NjRfdCBi eXRlcywKIAkJYnVmWzBdID0gJ1wwJzsKIAlpZiAoYnl0ZXMgPCAwKSB7CiAJCXNpZ24gPSAt MTsKLQkJYnl0ZXMgKj0gLTEwMDsKKwkJYnl0ZXMgPSAtYnl0ZXM7CiAJCWJhc2VsZW4gPSAz OwkJLyogc2lnbiwgZGlnaXQsIHByZWZpeCAqLwogCX0gZWxzZSB7CiAJCXNpZ24gPSAxOwot CQlieXRlcyAqPSAxMDA7CiAJCWJhc2VsZW4gPSAyOwkJLyogZGlnaXQsIHByZWZpeCAqLwog CX0KIAlpZiAoZmxhZ3MgJiBITl9OT1NQQUNFKQpAQCAtMTA3LDM5ICsxMjcsNDIgQEAgaHVt YW5pemVfbnVtYmVyKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50NjRfdCBieXRlcywKIAlp ZiAobGVuIDwgYmFzZWxlbiArIDEpCiAJCXJldHVybiAoLTEpOwogCisJLyogRGV0ZXJtaW5l IHRoZSBtYXhpbXVtIG51bWJlciB0aGF0IGZpdHMuICovCisJZm9yIChtYXggPSAxLCBpID0g bGVuIC0gYmFzZWxlbjsgaS0tID4gMDspCisJCW1heCAqPSAxMDsKKwogCWlmIChzY2FsZSAm IChITl9BVVRPU0NBTEUgfCBITl9HRVRTQ0FMRSkpIHsKLQkJLyogU2VlIGlmIHRoZXJlIGlz IGFkZGl0aW9uYWwgY29sdW1ucyBjYW4gYmUgdXNlZC4gKi8KLQkJZm9yIChtYXggPSAxMDAs IGkgPSBsZW4gLSBiYXNlbGVuOyBpLS0gPiAwOykKLQkJCW1heCAqPSAxMDsKLQotCQkvKgot CQkgKiBEaXZpZGUgdGhlIG51bWJlciB1bnRpbCBpdCBmaXRzIHRoZSBnaXZlbiBjb2x1bW4u Ci0JCSAqIElmIHRoZXJlIHdpbGwgYmUgYW4gb3ZlcmZsb3cgYnkgdGhlIHJvdW5kaW5nIGJl bG93LAotCQkgKiBkaXZpZGUgb25jZSBtb3JlLgotCQkgKi8KLQkJZm9yIChpID0gMDsgYnl0 ZXMgPj0gbWF4IC0gNTAgJiYgaSA8IG1heHNjYWxlOyBpKyspCi0JCQlieXRlcyAvPSBkaXZp c29yOworCQkvKiBEaXZpZGUgdGhlIG51bWJlciB1bnRpbCBpdCBmaXRzIHRoZSBnaXZlbiBs ZW5ndGguICovCisJCWZvciAoaSA9IDAsIGZ1bGxkaXYgPSAxOyBpIDwgbWF4c2NhbGU7IGkr KykgeworCQkJZGl2aWRlKGJ5dGVzLCBmdWxsZGl2LCAmcXVvdCwgJnF1b3RyLCAmZnJhY3Ip OworCQkJaWYgKChxdW90ciA8IDEwICYmIGkgPiAwICYmIGZsYWdzICYgSE5fREVDSU1BTCAm JgorCQkJICAgIHF1b3RyICogMTAwIDwgbWF4KSB8fCBxdW90IDwgbWF4KQorCQkJCWJyZWFr OworCQkJZnVsbGRpdiAqPSBkaXZpc29yOworCQl9CiAKIAkJaWYgKHNjYWxlICYgSE5fR0VU U0NBTEUpCiAJCQlyZXR1cm4gKGkpOwotCX0gZWxzZQotCQlmb3IgKGkgPSAwOyBpIDwgc2Nh bGUgJiYgaSA8IG1heHNjYWxlOyBpKyspCi0JCQlieXRlcyAvPSBkaXZpc29yOworCX0gZWxz ZSB7CisJCWZvciAoaSA9IDAsIGZ1bGxkaXYgPSAxOyBpIDwgc2NhbGU7IGkrKykKKwkJCWZ1 bGxkaXYgKj0gZGl2aXNvcjsKKwkJZGl2aWRlKGJ5dGVzLCBmdWxsZGl2LCAmcXVvdCwgJnF1 b3RyLCAmZnJhY3IpOworCQlpZiAoKHF1b3RyIDwgMTAgJiYgaSA+IDAgJiYgZmxhZ3MgJiBI Tl9ERUNJTUFMICYmCisJCSAgICBxdW90ciAqIDEwMCA+PSBtYXgpIHx8IHF1b3QgPj0gbWF4 KQorCQkJcmV0dXJuICgtMSk7CisJfQogCi0JLyogSWYgYSB2YWx1ZSA8PSA5LjkgYWZ0ZXIg cm91bmRpbmcgYW5kIC4uLiAqLwotCWlmIChieXRlcyA8IDk5NSAmJiBpID4gMCAmJiBmbGFn cyAmIEhOX0RFQ0lNQUwpIHsKKwkvKiBJZiBxdW90aWVudCA8IDEwIGFmdGVyIHJvdW5kaW5n IGFuZCAuLi4gKi8KKwlpZiAocXVvdHIgPCAxMCAmJiBpID4gMCAmJiBmbGFncyAmIEhOX0RF Q0lNQUwpIHsKIAkJLyogYmFzZWxlbiArIFwwICsgLk4gKi8KIAkJaWYgKGxlbiA8IGJhc2Vs ZW4gKyAxICsgMikKIAkJCXJldHVybiAoLTEpOwotCQliID0gKChpbnQpYnl0ZXMgKyA1KSAv IDEwOwotCQlzMSA9IGIgLyAxMDsKLQkJczIgPSBiICUgMTA7CiAJCXIgPSBzbnByaW50Zihi dWYsIGxlbiwgIiVkJXMlZCVzJXMlcyIsCi0JCSAgICBzaWduICogczEsIGxvY2FsZWNvbnYo KS0+ZGVjaW1hbF9wb2ludCwgczIsCisJCSAgICBzaWduICogKGludCkgcXVvdHIsIGxvY2Fs ZWNvbnYoKS0+ZGVjaW1hbF9wb2ludCwgZnJhY3IsCiAJCSAgICBzZXAsIFNDQUxFMlBSRUZJ WChpKSwgc3VmZml4KTsKIAl9IGVsc2UKIAkJciA9IHNucHJpbnRmKGJ1ZiwgbGVuLCAiJSIg UFJJZDY0ICIlcyVzJXMiLAotCQkgICAgc2lnbiAqICgoYnl0ZXMgKyA1MCkgLyAxMDApLAor CQkgICAgc2lnbiAqIHF1b3QsCiAJCSAgICBzZXAsIFNDQUxFMlBSRUZJWChpKSwgc3VmZml4 KTsKIAogCXJldHVybiAocik7Cg== --------------040200060404010907090506--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C7194E6.6080708>