threads / patch / 27468

patchFix useless comparison bug

Subject: [PATCH] Fix useless comparison bug

## tl;dr

One message between May 26, 2011 and May 26, 2011. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

Chris Wilson· May 26, 2011, 14:01 UTC · lore
The variable 'actual' was declared with a size_t type. In this line:
  actual = read_in_full(fd, buf, sz);

read_in_full returns a ssize_t type. Since size_t is unsigned and ssize_t is signed, the value is implicitly converted from a signed type to an unsigned type. That makes this comparison useless,

  if (actual < 0)
    die_errno("index-stream: reading input");

as it will always be false. This means, on an error path, git will continue when it should die gracefully.

This bug was introduced in 4dd1fbc.
Signed-off-by: Chris Wilson <cwilson@vigilantsw.com>
---
Hi Folks,
Sentry found this committed in last nights snapshot.

Chris Wilson http://vigilantsw.com/ Vigilant Software

 sha1_file.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to sha1_file.c +1 −1
diff --git a/sha1_file.c b/sha1_file.c
index 064a330..c251af8 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2704,7 +2704,7 @@ static int index_stream(unsigned char *sha1, int fd, size_t size,
        while (size) {
                char buf[10240];
                size_t sz = size < sizeof(buf) ? size : sizeof(buf);
-               size_t actual;
+               ssize_t actual;

                actual = read_in_full(fd, buf, sz);
                if (actual < 0)
-- 
1.6.3.3

← back to recent threads