Browse Source

Replace hex values with chars.

pull/1183/head
Damir Nedžibović 5 years ago
parent
commit
2bbfcb2750
1 changed files with 23 additions and 23 deletions
  1. +23
    -23
      daemon/bencode.c

+ 23
- 23
daemon/bencode.c View File

@ -709,7 +709,7 @@ static int __bencode_string(const char *s, int offset, int len) {
unsigned long long sl; unsigned long long sl;
char *end; 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) if (pos == len)
return -1; 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) { static int __bencode_integer(const char *s, int offset, int len) {
int pos; 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; return -2;
} }
++offset; ++offset;
} }
if (s[offset + 1] == 0x65)
if (s[offset + 1] == 'e')
return -2; 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 offset + 3;
return -2; 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; 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_next(const char *s, int offset, int len);
static int __bencode_list(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); offset = __bencode_next(s, offset, len);
if (offset < 0) if (offset < 0)
return offset; 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) { 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); offset = __bencode_string(s, offset - 1, len);
if (offset < 0) if (offset < 0)
return offset; return offset;
@ -788,22 +788,22 @@ static int __bencode_next(const char *s, int offset, int len) {
if (offset >= len) if (offset >= len)
return -1; return -1;
switch(s[offset]) { switch(s[offset]) {
case 0x69:
case 'i':
return __bencode_integer(s, offset, len); return __bencode_integer(s, offset, len);
case 0x6c:
case 'l':
return __bencode_list(s, offset, len); return __bencode_list(s, offset, len);
case 0x64:
case 'd':
return __bencode_dictionary(s, offset, len); 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 __bencode_string(s, offset - 1, len);
} }
return -2; return -2;


Loading…
Cancel
Save