components/coreutils/patches/fix-od.patch
author Craig Mohrman <craig.mohrman@oracle.com>
Mon, 22 Jul 2013 12:36:47 -0700
changeset 1402 f225f89a0538
parent 1326 6edae69990a7
permissions -rw-r--r--
16658678 problem in UTILITY/PHP 16004918 problem in UTILITY/PHP 16098069 /etc/apache2/2.2/conf.d/php/php.conf missing on upgrade to s11.1 17026033 problem in UTILITY/PHP 17157091 problem in UTILITY/PHP
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1326
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     1
Fix for CR #16833210 - god does not handle large values of -w well
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     2
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     3
GNU od -wN with N larger than 64K on a system with 32-bit size_t would
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     4
print approximately 2*N bytes of extraneous padding.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     5
[Bug introduced in coreutils-7.0]
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     6
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     7
From: Jim Meyering <address@hidden>
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     8
Date: Sat, 1 Jun 2013 19:20:06 -0700
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     9
Subject: [PATCH] od: -wN, N>64K, avoid misbehavior on systems with 32-bit
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    10
 size_t
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    11
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    12
* src/od.c (PRINT_FIELDS): Declare "i" to be of type uintmax_t, so that
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    13
the numerator in the expression for "next_pad" does not overflow.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    14
(print_named_ascii): Likewise.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    15
(print_ascii): Likewise.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    16
Bug introduced via commit v6.12-42-g20c0b87.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    17
* tests/misc/od.pl: Exercise each of the three affected code paths.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    18
* NEWS (Bug fixes): Mention it.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    19
Reported by Rich Burridge.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    20
---
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    21
 NEWS             | 4 ++++
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    22
 THANKS.in        | 1 +
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    23
 src/od.c         | 6 +++---
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    24
 tests/misc/od.pl | 7 +++++++
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    25
 4 files changed, 15 insertions(+), 3 deletions(-)
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    26
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    27
Also see the email thread at:
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    28
http://lists.gnu.org/archive/html/bug-coreutils/2013-06/msg00009.html
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    29
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    30
--- coreutils-8.16/src/od.c.orig	2013-06-03 06:32:09.966956225 -0700
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    31
+++ coreutils-8.16/src/od.c	2013-06-03 07:15:29.690420676 -0700
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    32
@@ -394,7 +394,7 @@
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    33
    char const *FMT_STRING, int width, int pad)                          \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    34
 {                                                                       \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    35
   T const *p = block;                                                   \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    36
-  size_t i;                                                             \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    37
+  uintmax_t i;                                                          \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    38
   int pad_remaining = pad;                                              \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    39
   for (i = fields; blank < i; i--)                                      \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    40
     {                                                                   \
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    41
@@ -450,7 +450,7 @@
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    42
                    int width, int pad)
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    43
 {
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    44
   unsigned char const *p = block;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    45
-  size_t i;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    46
+  uintmax_t i;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    47
   int pad_remaining = pad;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    48
   for (i = fields; blank < i; i--)
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    49
     {
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    50
@@ -481,7 +481,7 @@
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    51
              int pad)
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    52
 {
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    53
   unsigned char const *p = block;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    54
-  size_t i;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    55
+  uintmax_t i;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    56
   int pad_remaining = pad;
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    57
   for (i = fields; blank < i; i--)
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    58
     {
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    59
--- coreutils-8.16/tests/misc/od.orig	2013-06-03 06:34:10.913221535 -0700
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    60
+++ coreutils-8.16/tests/misc/od	2013-06-03 06:34:46.766226767 -0700
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    61
@@ -57,6 +57,14 @@
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    62
      # even if the kernel reports that the file has stat.st_size = 0.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    63
      ['j-proc', "-An -c -j $proc_file_byte_count $proc_file",
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    64
                                {IN=>{f2=>'e'}}, {OUT=>"   e\n"}],
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    65
+
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    66
+     # Ensure that a large width does not cause trouble.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    67
+     # From coreutils-7.0 through coreutils-8.21, these would print
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    68
+     # approximately 128KiB of padding.
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    69
+     ['wide-a',   '-a -w65537 -An', {IN=>{g=>'x'}}, {OUT=>"   x\n"}],
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    70
+     ['wide-c',   '-c -w65537 -An', {IN=>{g=>'x'}}, {OUT=>"   x\n"}],
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    71
+     ['wide-x', '-tx1 -w65537 -An', {IN=>{g=>'B'}}, {OUT=>" 42\n"}],
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    72
+
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    73
     );
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    74
 
6edae69990a7 16833210 god does not handle large values of -w well
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    75
 my $save_temps = $ENV{DEBUG};