ITS#9068 fix backslash escaping
mdb_load wasn't properly inserting escaped backslashes into the data. mdb_dump wasn't escaping backslashes when generating printable output.
This commit is contained in:
parent
cdfa2e58df
commit
e907305c6c
2
external/db_drivers/liblmdb/mdb_dump.c
vendored
2
external/db_drivers/liblmdb/mdb_dump.c
vendored
@ -64,6 +64,8 @@ static void text(MDB_val *v)
|
|||||||
end = c + v->mv_size;
|
end = c + v->mv_size;
|
||||||
while (c < end) {
|
while (c < end) {
|
||||||
if (isprint(*c)) {
|
if (isprint(*c)) {
|
||||||
|
if (*c == '\\')
|
||||||
|
putchar('\\');
|
||||||
putchar(*c);
|
putchar(*c);
|
||||||
} else {
|
} else {
|
||||||
putchar('\\');
|
putchar('\\');
|
||||||
|
4
external/db_drivers/liblmdb/mdb_load.c
vendored
4
external/db_drivers/liblmdb/mdb_load.c
vendored
@ -236,7 +236,7 @@ badend:
|
|||||||
while (c2 < end) {
|
while (c2 < end) {
|
||||||
if (*c2 == '\\') {
|
if (*c2 == '\\') {
|
||||||
if (c2[1] == '\\') {
|
if (c2[1] == '\\') {
|
||||||
c1++; c2 += 2;
|
*c1++ = *c2;
|
||||||
} else {
|
} else {
|
||||||
if (c2+3 > end || !isxdigit(c2[1]) || !isxdigit(c2[2])) {
|
if (c2+3 > end || !isxdigit(c2[1]) || !isxdigit(c2[2])) {
|
||||||
Eof = 1;
|
Eof = 1;
|
||||||
@ -244,8 +244,8 @@ badend:
|
|||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
*c1++ = unhex(++c2);
|
*c1++ = unhex(++c2);
|
||||||
c2 += 2;
|
|
||||||
}
|
}
|
||||||
|
c2 += 2;
|
||||||
} else {
|
} else {
|
||||||
/* copies are redundant when no escapes were used */
|
/* copies are redundant when no escapes were used */
|
||||||
*c1++ = *c2++;
|
*c1++ = *c2++;
|
||||||
|
Loading…
Reference in New Issue
Block a user