[poppler] [PATCH] fix GooString::insert()

Albert Astals Cid aacid at kde.org
Sun Nov 25 15:30:47 PST 2012


El Dissabte, 24 de novembre de 2012, a les 16:58:00, Pino Toscano va escriure:
> Hi,
> 
> as reported in a Debian bug [1], it seems GooString::insert could lead
> to using uninitialized memory.
> The case is a simple:
>   GooString goo;
>   goo.insert(0, ".");
>   goo.insert(0, "This is a very long long test string");
> i.e. basically first insert a single character at position 0, and then a
> string longer than STR_STATIC_SIZE always at position 0.
> 
> The insert(int,char) part of the patch in the bug is superfluous, while
> the other part seems correct; on the other hand, I've found that
> basically that loop is reinventing memmove, so I've prepared the
> following:
> 
> --- a/GooString.cc
> +++ b/GooString.cc
> @@ -646,8 +646,7 @@ GooString *GooString::insert(int i, cons
>      lengthA = strlen(str);
> 
>    resize(length + lengthA);
> -  for (j = prevLen; j >= i; --j)
> -    s[j+lengthA] = s[j];
> +  memmove(s+i+lengthA, s+i, prevLen);
>    memcpy(s+i, str, lengthA);
>    return this;
>  }
> 
> Before I commit it in master and 0.20, do you see anything wrong with
> it?
> Albert, wold it too costly run your regression tests only with this?

Ran the regtest, commited to master.

Cheers,
  Albert

> 
> [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=693817
> 
> Thanks,


More information about the poppler mailing list