diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-08-25 00:39:58 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-08-25 00:39:58 +0200 |
commit | 1947592461a7f6b97fa32f4517ba65f89ff428e0 (patch) | |
tree | d5477e48fc11e7c65e66cd24f3bf26e8c0212b0d | |
parent | 6b36945d7e8a780a3063f09c65b3d9fed6525552 (diff) | |
parent | 2d1d2bb59f88956b894a6cdb002bc52a2528e4a8 (diff) | |
download | libgit2-1947592461a7f6b97fa32f4517ba65f89ff428e0.tar.gz |
Merge pull request #3355 from palmin/palmin/fix-2830
Include the 4 characters not recognised as hex-number 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; } } |