From: miker Date: Mon, 27 Nov 2006 17:27:22 +0000 (+0000) Subject: off-by-one ... arg X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=8286006614ec2172d5e4cda1f361c6c14c915e71;p=evergreen%2Fpines.git off-by-one ... arg git-svn-id: svn://svn.open-ils.org/ILS/trunk@6618 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/OpenSRF/src/utils/utils.c b/OpenSRF/src/utils/utils.c index ffe738e6fa..3c7a2d6491 100644 --- a/OpenSRF/src/utils/utils.c +++ b/OpenSRF/src/utils/utils.c @@ -254,7 +254,7 @@ int buffer_add_char(growing_buffer* gb, char c) { char* uescape( const char* string, int size, int full_escape ) { growing_buffer* buf = buffer_init(size + 64); - int clen = 1; + int clen = 0; int idx = 0; unsigned long int c = 0x0; @@ -268,19 +268,19 @@ char* uescape( const char* string, int size, int full_escape ) { clen = 1; if (((unsigned char)string[idx] & 0xF0) == 0xF0) { - clen = 4; + clen = 3; c = (unsigned char)string[idx] ^ 0xF0; } else if (((unsigned char)string[idx] & 0xE0) == 0xE0) { - clen = 3; + clen = 2; c = (unsigned char)string[idx] ^ 0xE0; } else if (((unsigned char)string[idx] & 0xC0) == 0xC0) { - clen = 2; + clen = 1; c = (unsigned char)string[idx] ^ 0xC0; } - for (;clen;--clen) { + for (;clen;clen--) { idx++; // look at the next byte c = (c << 6) | ((unsigned char)string[idx] & 0x3F); // add this byte worth