From 5124817a4191ad643bc68e711036df1d27901f20 Mon Sep 17 00:00:00 2001 From: bolvan Date: Thu, 7 Jun 2018 17:59:56 +0300 Subject: [PATCH] tpws : fix possible null pointer dereference --- binaries/armhf/tpws | Bin 58516 -> 33224 bytes binaries/mips32r1-lsb/tpws | Bin 102444 -> 102444 bytes binaries/mips32r1-msb/tpws | Bin 87808 -> 87808 bytes binaries/x86_64/tpws | Bin 77104 -> 77104 bytes tpws/chartree.c | 162 ++++++++++++++++++------------------- tpws/chartree.h | 32 ++++---- tpws/tpws.c | 2 +- 7 files changed, 98 insertions(+), 98 deletions(-) diff --git a/binaries/armhf/tpws b/binaries/armhf/tpws index 1deae6e348eef17b10dd41912568070737c91734..088d191867775c4b74e900b63cd350e0745b2543 100755 GIT binary patch literal 33224 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 A(f|Me literal 58516 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%0Ahtjj|Hi((>N@$<7gN~O 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 diff --git a/binaries/mips32r1-lsb/tpws b/binaries/mips32r1-lsb/tpws index f3e8ec70d5998253ffbd1b527280f99e955e3638..9a8cad2e16d41fe783aeb292c696a2586f1fad6b 100755 GIT binary patch delta 55 zcmZ3pfNjkJwhem1lcRW~6x10U1Q>uIg5gj5t(;0&ah7!*X37&IpFC^z#9Z|4_g{OAk-CQ%DS diff --git a/binaries/x86_64/tpws b/binaries/x86_64/tpws index a6d7e267d87a247d4a4926ce9fc66ff458203837..d7011faecc9755eb9f6d134721ff7c75356113dd 100755 GIT binary patch delta 5995 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 UIIQ{~?A(a|#Xiy(0dx8P1EG8UhX4Qo delta 5915 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 Xn6xVjmj4%aLG*uP@9T?(xxzmI@_O2q diff --git a/tpws/chartree.c b/tpws/chartree.c index ef19502..8a44b8d 100644 --- a/tpws/chartree.c +++ b/tpws/chartree.c @@ -1,81 +1,81 @@ -#include "chartree.h" -#include -#include - -static char *DupLower(const char *s) -{ - char *sp,*sl = strdup(s); - if (!sl) return false; - for(sp=sl;*sp;sp++) *sp=tolower(*sp); - return sl; -} - -static cptr *CharTreeInit(char c) -{ - cptr *p; - p=(cptr *)calloc(1,sizeof(cptr)); - if (p) p->chr = c; - return p; -} -void CharTreeDestroy(cptr *p) -{ - if (p) - { - CharTreeDestroy(p->leaf); - CharTreeDestroy(p->next); - free(p); - } -} -static cptr *CharTreeFindChar(cptr *p,char c) -{ - while (p) - { - if (p->chr==c) return p; - p = p->next; - } - return NULL; -} -bool CharTreeAddStr(cptr **pp,const char *s) -{ - cptr *p; - if (*pp) - { - if (!(p=CharTreeFindChar(*pp,*s))) - { - // already present. append to list head - if (!(p = CharTreeInit(*s))) - return false; - p->next = *pp; - *pp = p; - } - } - else - if (!(p = *pp = CharTreeInit(*s))) return false; - if (!*s) return true; - return CharTreeAddStr(&p->leaf,s+1); -} -bool CharTreeCheckStr(cptr *p,const char *s) -{ - p = CharTreeFindChar(p,*s); - if (!p) return false; - if (!*s) return true; - return CharTreeCheckStr(p->leaf,s+1); -} -bool CharTreeAddStrLower(cptr **pp,const char *s) -{ - bool b; - char *sl = DupLower(s); - if (!sl) return false; - b=CharTreeAddStr(pp,sl); - free(sl); - return b; -} -bool CharTreeCheckStrLower(cptr *pp,const char *s) -{ - bool b; - char *sl = DupLower(s); - if (!sl) return false; - b=CharTreeCheckStr(pp,sl); - free(sl); - return b; -} +#include "chartree.h" +#include +#include + +static char *DupLower(const char *s) +{ + char *sp,*sl = strdup(s); + if (!sl) return false; + for(sp=sl;*sp;sp++) *sp=tolower(*sp); + return sl; +} + +static cptr *CharTreeInit(char c) +{ + cptr *p; + p=(cptr *)calloc(1,sizeof(cptr)); + if (p) p->chr = c; + return p; +} +void CharTreeDestroy(cptr *p) +{ + if (p) + { + CharTreeDestroy(p->leaf); + CharTreeDestroy(p->next); + free(p); + } +} +static cptr *CharTreeFindChar(cptr *p,char c) +{ + while (p) + { + if (p->chr==c) return p; + p = p->next; + } + return NULL; +} +bool CharTreeAddStr(cptr **pp,const char *s) +{ + cptr *p; + if (*pp) + { + if (!(p=CharTreeFindChar(*pp,*s))) + { + // already present. append to list head + if (!(p = CharTreeInit(*s))) + return false; + p->next = *pp; + *pp = p; + } + } + else + if (!(p = *pp = CharTreeInit(*s))) return false; + if (!*s) return true; + return CharTreeAddStr(&p->leaf,s+1); +} +bool CharTreeCheckStr(cptr *p,const char *s) +{ + p = CharTreeFindChar(p,*s); + if (!p) return false; + if (!*s) return true; + return CharTreeCheckStr(p->leaf,s+1); +} +bool CharTreeAddStrLower(cptr **pp,const char *s) +{ + bool b; + char *sl = DupLower(s); + if (!sl) return false; + b=CharTreeAddStr(pp,sl); + free(sl); + return b; +} +bool CharTreeCheckStrLower(cptr *pp,const char *s) +{ + bool b; + char *sl = DupLower(s); + if (!sl) return false; + b=CharTreeCheckStr(pp,sl); + free(sl); + return b; +} diff --git a/tpws/chartree.h b/tpws/chartree.h index ac2eddc..6998143 100644 --- a/tpws/chartree.h +++ b/tpws/chartree.h @@ -1,16 +1,16 @@ -#pragma once - -#include -#include - -typedef struct cptr -{ - char chr; - struct cptr *leaf,*next; -} cptr; - -void CharTreeDestroy(cptr *p); -bool CharTreeAddStr(cptr **pp,const char *s); -bool CharTreeAddStrLower(cptr **pp,const char *s); -bool CharTreeCheckStr(cptr *p,const char *s); -bool CharTreeCheckStrLower(cptr *pp,const char *s); +#pragma once + +#include +#include + +typedef struct cptr +{ + char chr; + struct cptr *leaf,*next; +} cptr; + +void CharTreeDestroy(cptr *p); +bool CharTreeAddStr(cptr **pp,const char *s); +bool CharTreeAddStrLower(cptr **pp,const char *s); +bool CharTreeCheckStr(cptr *p,const char *s); +bool CharTreeCheckStrLower(cptr *pp,const char *s); diff --git a/tpws/tpws.c b/tpws/tpws.c index 3043a2b..f9f74b6 100644 --- a/tpws/tpws.c +++ b/tpws/tpws.c @@ -275,7 +275,7 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { } } - if (params.hostnospace && pHost[5] == ' ' && find_host(&pHost,buf,bs)) + if (params.hostnospace && find_host(&pHost,buf,bs) && pHost[5] == ' ') { p = pHost + 6; pos = p - buf;