Commit 1947592461a7f6b97fa32f4517ba65f89ff428e0

Carlos Martín Nieto 2015-08-25T00:39:58

Merge pull request #3355 from palmin/palmin/fix-2830 Include the 4 characters not recognised as hex-number in parse_len

diff --git a/src/transports/smart_pkt.c b/src/transports/smart_pkt.c
index 9ccbd80..a6ae55d 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;
 		}
 	}