fixed a potential in set_err_with_syserr in hcl-s.c
This commit is contained in:
parent
de534fed83
commit
b7434aa976
22
lib/hcl-s.c
22
lib/hcl-s.c
@ -244,7 +244,7 @@ struct hcl_server_t
|
||||
hcl_errnum_t errnum;
|
||||
struct
|
||||
{
|
||||
hcl_ooch_t buf[2048];
|
||||
hcl_ooch_t buf[HCL_ERRMSG_CAPA];
|
||||
hcl_oow_t len;
|
||||
} errmsg;
|
||||
int stopreq;
|
||||
@ -1748,13 +1748,12 @@ static void set_err_with_syserr (hcl_server_t* server, int syserr, const char* b
|
||||
va_end (ap);
|
||||
|
||||
#if defined(HCL_OOCH_IS_BCH)
|
||||
hcl->errmsg.len += hcl_copybcstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash);
|
||||
hcl->errmsg.len += hcl_copybcstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.bch);
|
||||
hcl->errmsg.len += hcl_copybcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash);
|
||||
hcl->errmsg.len += hcl_copybcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.bch);
|
||||
#else
|
||||
hcl->errmsg.len += hcl_copyucstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash);
|
||||
tmplen = hcl_countbcstr(hcl->errmsg.tmpbuf.bch);
|
||||
hcl->errmsg.len += hcl_copyucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash);
|
||||
tmplen2 = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len;
|
||||
hcl_convbtouchars (hcl, hcl->errmsg.tmpbuf.bch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2);
|
||||
hcl_convbtoucstr (hcl, hcl->errmsg.tmpbuf.bch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2);
|
||||
hcl->errmsg.len += tmplen2; /* ignore conversion errors */
|
||||
#endif
|
||||
}
|
||||
@ -1769,17 +1768,14 @@ static void set_err_with_syserr (hcl_server_t* server, int syserr, const char* b
|
||||
va_end (ap);
|
||||
|
||||
#if defined(HCL_OOCH_IS_BCH)
|
||||
hcl->errmsg.len += hcl_copybcstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash);
|
||||
|
||||
tmplen = hcl_countucstr(hcl->errmsg.tmpbuf.uch);
|
||||
hcl->errmsg.len += hcl_copybcstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, b_dash);
|
||||
tmplen2 = HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len;
|
||||
hcl_convutobchars (hcl, hcl->errmsg.tmpbuf.uch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2);
|
||||
hcl_convutobcstr (hcl, hcl->errmsg.tmpbuf.uch, &tmplen, &hcl->errmsg.buf[hcl->errmsg.len], &tmplen2);
|
||||
hcl->errmsg.len += tmplen2; /* ignore conversion errors */
|
||||
#else
|
||||
hcl->errmsg.len += hcl_copyucstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash);
|
||||
hcl->errmsg.len += hcl_copyucstr (&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.uch);
|
||||
hcl->errmsg.len += hcl_copyucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, u_dash);
|
||||
hcl->errmsg.len += hcl_copyucstr(&hcl->errmsg.buf[hcl->errmsg.len], HCL_COUNTOF(hcl->errmsg.buf) - hcl->errmsg.len, hcl->errmsg.tmpbuf.uch);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
server->errnum = errnum;
|
||||
|
10
lib/hcl.h
10
lib/hcl.h
@ -992,6 +992,8 @@ struct hcl_synerr_t
|
||||
typedef struct hcl_compiler_t hcl_compiler_t;
|
||||
#endif
|
||||
|
||||
#define HCL_ERRMSG_CAPA 2048
|
||||
|
||||
struct hcl_t
|
||||
{
|
||||
hcl_mmgr_t* mmgr;
|
||||
@ -1002,11 +1004,11 @@ struct hcl_t
|
||||
{
|
||||
union
|
||||
{
|
||||
hcl_ooch_t ooch[2048];
|
||||
hcl_bch_t bch[2048];
|
||||
hcl_uch_t uch[2048];
|
||||
hcl_ooch_t ooch[HCL_ERRMSG_CAPA];
|
||||
hcl_bch_t bch[HCL_ERRMSG_CAPA];
|
||||
hcl_uch_t uch[HCL_ERRMSG_CAPA];
|
||||
} tmpbuf;
|
||||
hcl_ooch_t buf[2048];
|
||||
hcl_ooch_t buf[HCL_ERRMSG_CAPA];
|
||||
hcl_oow_t len;
|
||||
} errmsg;
|
||||
int shuterr;
|
||||
|
Loading…
Reference in New Issue
Block a user