diff options
author | Anders Borum <anders@algoritmer.dk> | 2015-08-05 18:50:25 +0200 |
---|---|---|
committer | Anders Borum <anders@algoritmer.dk> | 2015-08-17 07:58:31 +0200 |
commit | 2d1d2bb59f88956b894a6cdb002bc52a2528e4a8 (patch) | |
tree | 6ae58b112f35bd59cdc727212172385a3b1a20b4 | |
parent | cf716beed2f4729cf01a9822d75b4f1ebf7ccbf1 (diff) | |
download | libgit2-2d1d2bb59f88956b894a6cdb002bc52a2528e4a8.tar.gz |
Include the 4 characters not recognised as hex-number when setting error in parse_len
-rw-r--r-- | src/transports/smart_pkt.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/transports/smart_pkt.c b/src/transports/smart_pkt.c index 9ccbd8085..a6ae55d48 100644 --- a/src/transports/smart_pkt.c +++ b/src/transports/smart_pkt.c @@ -351,7 +351,7 @@ static int unpack_pkt(git_pkt **out, const char *line, size_t len) static int32_t parse_len(const char *line) { char num[PKT_LEN_SIZE + 1]; - int i, error; + int i, k, error; int32_t len; const char *num_end; @@ -360,7 +360,14 @@ static int32_t parse_len(const char *line) for (i = 0; i < PKT_LEN_SIZE; ++i) { if (!isxdigit(num[i])) { - giterr_set(GITERR_NET, "Found invalid hex digit in length"); + /* Make sure there are no special characters before passing to error message */ + for (k = 0; k < PKT_LEN_SIZE; ++k) { + if(!isprint(num[k])) { + num[k] = '.'; + } + } + + giterr_set(GITERR_NET, "invalid hex digit in length: '%s'", num); return -1; } } |