Replace hex values with chars.

pull/1180/head
Damir Nedžibović 5 years ago
parent 37c86a8fa0
commit 336deb4c67

@ -709,7 +709,7 @@ static int __bencode_string(const char *s, int offset, int len) {
unsigned long long sl;
char *end;
for (pos = offset + 1; s[pos] != 0x3a && isdigit(s[pos]) && pos < len; ++pos);
for (pos = offset + 1; s[pos] != ':' && isdigit(s[pos]) && pos < len; ++pos);
if (pos == len)
return -1;
@ -726,24 +726,24 @@ static int __bencode_string(const char *s, int offset, int len) {
static int __bencode_integer(const char *s, int offset, int len) {
int pos;
if (s[offset + 1] == 0x2d) {
if (offset + 3 < len && s[offset + 2] == 0x30 && s[offset + 3] == 0x65) {
if (s[offset + 1] == '-') {
if (offset + 3 < len && s[offset + 2] == '0' && s[offset + 3] == 'e') {
return -2;
}
++offset;
}
if (s[offset + 1] == 0x65)
if (s[offset + 1] == 'e')
return -2;
if (s[offset + 1] == 0x30) {
if (offset + 2 < len && s[offset + 2] == 0x65)
if (s[offset + 1] == '0') {
if (offset + 2 < len && s[offset + 2] == 'e')
return offset + 3;
return -2;
}
for (pos = offset + 1; s[pos] != 0x65 && pos < len; ++pos) {
if (s[pos] < 0x30 || s[pos] > 0x39)
for (pos = offset + 1; s[pos] != 'e' && pos < len; ++pos) {
if (s[pos] < '0' || s[pos] > '9')
return -2;
}
@ -756,7 +756,7 @@ static int __bencode_integer(const char *s, int offset, int len) {
static int __bencode_next(const char *s, int offset, int len);
static int __bencode_list(const char *s, int offset, int len) {
for (++offset; s[offset] != 0x65 && offset < len;) {
for (++offset; s[offset] != 'e' && offset < len;) {
offset = __bencode_next(s, offset, len);
if (offset < 0)
return offset;
@ -769,7 +769,7 @@ static int __bencode_list(const char *s, int offset, int len) {
}
static int __bencode_dictionary(const char *s, int offset, int len) {
for (++offset; s[offset] != 0x65 && offset < len;) {
for (++offset; s[offset] != 'e' && offset < len;) {
offset = __bencode_string(s, offset - 1, len);
if (offset < 0)
return offset;
@ -788,22 +788,22 @@ static int __bencode_next(const char *s, int offset, int len) {
if (offset >= len)
return -1;
switch(s[offset]) {
case 0x69:
case 'i':
return __bencode_integer(s, offset, len);
case 0x6c:
case 'l':
return __bencode_list(s, offset, len);
case 0x64:
case 'd':
return __bencode_dictionary(s, offset, len);
case 0x30:
case 0x31:
case 0x32:
case 0x33:
case 0x34:
case 0x35:
case 0x36:
case 0x37:
case 0x38:
case 0x39:
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
return __bencode_string(s, offset - 1, len);
}
return -2;

Loading…
Cancel
Save