diff options
author | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-06-25 13:10:46 +0000 |
---|---|---|
committer | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-06-25 13:10:46 +0000 |
commit | 820ab6ba3fbd1e0322664156162bb51e9daeaf7d (patch) | |
tree | 93215fd4135d22c0b1d2bab67143359ab115079d | |
parent | 56a5e3453ca8651296755d5833aac6becf620fa3 (diff) | |
download | zabbix-820ab6ba3fbd1e0322664156162bb51e9daeaf7d.tar.gz zabbix-820ab6ba3fbd1e0322664156162bb51e9daeaf7d.tar.xz zabbix-820ab6ba3fbd1e0322664156162bb51e9daeaf7d.zip |
- [ZBX-386] fixed possible agent crash in processing of active checks
git-svn-id: svn://svn.zabbix.com/trunk@5790 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | src/libs/zbxcrypto/base64.c | 28 | ||||
-rw-r--r-- | src/libs/zbxdbhigh/db.c | 2 |
3 files changed, 19 insertions, 12 deletions
@@ -110,6 +110,7 @@ Changes for 1.5: Changes for 1.4.6: + - [ZBX-386] fixed possible agent crash in processing of active checks (Sasha) - [ZBX-379] added error checking for accept on server side (Sasha) - [ZBX-365] added support of long process names for proc.num and proc.mem, Linux 2.6 (Sasha) - [ZBX-78] fixed detection of net-snmp libs (Alexei) diff --git a/src/libs/zbxcrypto/base64.c b/src/libs/zbxcrypto/base64.c index 3aa94de0..dec27266 100644 --- a/src/libs/zbxcrypto/base64.c +++ b/src/libs/zbxcrypto/base64.c @@ -128,9 +128,10 @@ static unsigned char char_base64_decode(char c) *----------------------------------------------------------------------*/ void str_base64_encode(const char *p_str, char *p_b64str, int in_size) { - int i; - unsigned char from1=0,from2=0,from3=0; - unsigned char to1=0,to2=0,to3=0,to4=0; + int i; + unsigned char from1=0,from2=0,from3=0; + unsigned char to1=0,to2=0,to3=0,to4=0; + char *p; if ( 0 == in_size ) { @@ -140,8 +141,13 @@ void str_base64_encode(const char *p_str, char *p_b64str, int in_size) assert(p_str); assert(p_b64str); + p = p_b64str; + for ( i = 0; i < in_size ; i += 3 ) { + if (p - p_b64str > ZBX_MAX_B64_LEN - 5) + break; + from1 = from2 = from3 = 0; from1 = p_str[i]; if (i+1 < in_size) @@ -159,24 +165,24 @@ void str_base64_encode(const char *p_str, char *p_b64str, int in_size) to3 = ((from2&0xf)<<2)|(from3>>6); to4 = from3&0x3f; - *(p_b64str++) = char_base64_encode(to1); - *(p_b64str++) = char_base64_encode(to2); + *p++ = char_base64_encode(to1); + *p++ = char_base64_encode(to2); if (i+1 < in_size) { - *(p_b64str++) = char_base64_encode(to3); + *p++ = char_base64_encode(to3); } else { - *(p_b64str++) = '='; /* Padding */ + *p++ = '='; /* Padding */ } if (i+2 < in_size) { - *(p_b64str++) = char_base64_encode(to4); + *p++ = char_base64_encode(to4); } else { - *(p_b64str++) = '='; /* Padding */ + *p++ = '='; /* Padding */ }; /* if ( i % (76/4*3) == 0) @@ -185,8 +191,8 @@ void str_base64_encode(const char *p_str, char *p_b64str, int in_size) *(p_b64str++) = '\n'; }*/ }; - - *p_b64str = '\0'; + + *p = '\0'; return; } /*------------------------------------------------------------------------ diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c index 59a99216..a300fad4 100644 --- a/src/libs/zbxdbhigh/db.c +++ b/src/libs/zbxdbhigh/db.c @@ -1154,7 +1154,7 @@ int DBadd_history_text(zbx_uint64_t itemid, char *value, int clock) zbx_uint64_t id; sqlo_lob_desc_t loblp; /* the lob locator */ - sqlo_stmt_handle_t sth; + sqlo_stmt_handle_t sth = 0; sqlo_autocommit_off(oracle); |