From 8241eca986a18d242f52273f76d59f6828e6c859 Mon Sep 17 00:00:00 2001 From: Neven Sajko Date: Sun, 18 Aug 2019 13:46:43 +0000 Subject: libhtml: plug quite a few memory leaks Change-Id: I45bd62a590373669e90183cc2b2ee56570c007f5 --- src/libhtml/build.c | 3 +++ src/libhtml/lex.c | 14 ++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src/libhtml') diff --git a/src/libhtml/build.c b/src/libhtml/build.c index 7ce74449..06397086 100644 --- a/src/libhtml/build.c +++ b/src/libhtml/build.c @@ -2127,6 +2127,7 @@ getitems(ItemSource* is, uchar* data, int datalen) outerps = lastps(ps); ans = outerps->items->next; /* note: ans may be nil and di->kids not nil, if there's a frameset! */ + freeitem(outerps->items); outerps->items = newispacer(ISPnull); outerps->lastit = outerps->items; is->psstk = ps; @@ -2134,6 +2135,7 @@ getitems(ItemSource* is, uchar* data, int datalen) /* TODO evalscript(nil); */ ; } + freeitems(outerps->items); return_ans: if(dbgbuild) { @@ -2143,6 +2145,7 @@ return_ans: else printitems(ans, "getitems returning:"); } + _freetokens(toks, tokslen); return ans; } diff --git a/src/libhtml/lex.c b/src/libhtml/lex.c index 12127b58..258807dd 100644 --- a/src/libhtml/lex.c +++ b/src/libhtml/lex.c @@ -540,8 +540,11 @@ _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen) if(dbglex) fprint(2, "lex: returning %d tokens\n", ai); *plen = ai; - if(ai == 0) + free(ts); + if(ai == 0) { + free(a); return nil; + } return a; } @@ -603,15 +606,18 @@ getplaindata(TokenSource* ts, Token* a, int* pai) } /* Return concatenation of s and buf[0:j] */ +/* Frees s. */ static Rune* buftostr(Rune* s, Rune* buf, int j) { + Rune *tmp; buf[j] = 0; if(s == nil) - s = _Strndup(buf, j); + tmp = _Strndup(buf, j); else - s = _Strdup2(s, buf); - return s; + tmp = _Strdup2(s, buf); + free(s); + return tmp; } /* Gather data up to next start-of-tag or end-of-buffer. */ -- cgit v1.2.3 From a18741729cc1460088d1ddaa365dfa6455a459ec Mon Sep 17 00:00:00 2001 From: Neven Sajko Date: Sun, 18 Aug 2019 20:10:09 +0000 Subject: libhtml: plug a memory leak in addtext Change-Id: I9b8a4430e7d26008ba9508095f8eb4b124a93b9b --- src/libhtml/build.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/libhtml') diff --git a/src/libhtml/build.c b/src/libhtml/build.c index 06397086..78b6efff 100644 --- a/src/libhtml/build.c +++ b/src/libhtml/build.c @@ -2445,6 +2445,9 @@ addtext(Pstate* ps, Rune* s) free(s); } } + else { + free(s); + } } else { /* not literal mode */ if((ps->curstate&IFbrk) || ps->lastit == ps->items) -- cgit v1.2.3 From fa325e9b42b0bdfb48857d1958d9fb7ceac55151 Mon Sep 17 00:00:00 2001 From: Dan Cross Date: Fri, 10 Jan 2020 14:44:21 +0000 Subject: Trivial changes: whitespace and modes. Remote whitespace at the ends of lines. Remove blank lines from the ends of files. Change modes on source files so that they are not executable. Signed-off-by: Dan Cross --- src/libhtml/build.c | 8 ++++---- src/libhtml/lex.c | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/libhtml') diff --git a/src/libhtml/build.c b/src/libhtml/build.c index 78b6efff..b2387006 100644 --- a/src/libhtml/build.c +++ b/src/libhtml/build.c @@ -1815,7 +1815,7 @@ getitems(ItemSource* is, uchar* data, int datalen) tab = newtable(++is->ntables, aalign(tok), adimen(tok, Awidth), - aflagval(tok, Aborder), + aflagval(tok, Aborder), auintval(tok, Acellspacing, TABSP), auintval(tok, Acellpadding, TABPAD), makebackground(nil, acolorval(tok, Abgcolor, ps->curbg.color)), @@ -1916,8 +1916,8 @@ getitems(ItemSource* is, uchar* data, int datalen) flags |= TFisth; c = newtablecell(curtab->cells==nil? 1 : curtab->cells->cellid+1, auintval(tok, Arowspan, 1), - auintval(tok, Acolspan, 1), - aalign(tok), + auintval(tok, Acolspan, 1), + aalign(tok), adimen(tok, Awidth), auintval(tok, Aheight, 0), makebackground(nil, acolorval(tok, Abgcolor, tr->background.color)), @@ -4440,7 +4440,7 @@ validtable(Table* t) /* only when parsing is done is t->nrow set > 0 */ if(ok && t->nrow > 0 && t->ncol > 0) { /* table is "finished" */ - for(i = 0; i < t->nrow && ok; i++) + for(i = 0; i < t->nrow && ok; i++) ok = validtablerow(t->rows+i); for(j = 0; j < t->ncol && ok; j++) ok = validtablecol(t->cols+j); diff --git a/src/libhtml/lex.c b/src/libhtml/lex.c index 258807dd..49c5f502 100644 --- a/src/libhtml/lex.c +++ b/src/libhtml/lex.c @@ -31,11 +31,11 @@ Rune **tagnames; char *_tagnames[] = { " ", "!", - "a", + "a", "abbr", "acronym", "address", - "applet", + "applet", "area", "b", "base", @@ -614,7 +614,7 @@ buftostr(Rune* s, Rune* buf, int j) buf[j] = 0; if(s == nil) tmp = _Strndup(buf, j); - else + else tmp = _Strdup2(s, buf); free(s); return tmp; -- cgit v1.2.3