Message ID | 20181026152632.30318-3-ben.dooks@codethink.co.uk (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | [1/3] initial parsing of __attribute__((format)) | expand |
On Fri, Oct 26, 2018 at 04:26:31PM +0100, Ben Dooks wrote: > --- > tokenize.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tokenize.c b/tokenize.c > index 99b9580..c32f8c7 100644 > --- a/tokenize.c > +++ b/tokenize.c > @@ -124,7 +124,7 @@ const char *show_string(const struct string *string) > char *ptr; > int i; > > - if (!string->length) > + if (!string || !string->length) > return "<bad_string>"; I don't understand this change. What about a zero-length string ("")? -- Luc
On 26/10/18 22:33, Luc Van Oostenryck wrote: > On Fri, Oct 26, 2018 at 04:26:31PM +0100, Ben Dooks wrote: >> --- >> tokenize.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/tokenize.c b/tokenize.c >> index 99b9580..c32f8c7 100644 >> --- a/tokenize.c >> +++ b/tokenize.c >> @@ -124,7 +124,7 @@ const char *show_string(const struct string *string) >> char *ptr; >> int i; >> >> - if (!string->length) >> + if (!string || !string->length) >> return "<bad_string>"; > > I don't understand this change. What about a zero-length string ("")? The original checks for string->length but not if the string itself was NULL. I've eliminated the original mistake that triggered this.
On Mon, Oct 29, 2018 at 01:40:06PM +0000, Ben Dooks wrote: > On 26/10/18 22:33, Luc Van Oostenryck wrote: > > On Fri, Oct 26, 2018 at 04:26:31PM +0100, Ben Dooks wrote: > > > --- > > > tokenize.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/tokenize.c b/tokenize.c > > > index 99b9580..c32f8c7 100644 > > > --- a/tokenize.c > > > +++ b/tokenize.c > > > @@ -124,7 +124,7 @@ const char *show_string(const struct string *string) > > > char *ptr; > > > int i; > > > - if (!string->length) > > > + if (!string || !string->length) > > > return "<bad_string>"; > > > > I don't understand this change. What about a zero-length string ("")? > > > The original checks for string->length but not if the string itself > was NULL. I've eliminated the original mistake that triggered this. Oh yes, sorry. I didn't noticed that the original test checked the length and not the pointer. I'll investigate why the length was tested. Have you an example/testcase where it crashed? Kind regards, -- Luc
On 29/10/18 13:55, Luc Van Oostenryck wrote: > On Mon, Oct 29, 2018 at 01:40:06PM +0000, Ben Dooks wrote: >> On 26/10/18 22:33, Luc Van Oostenryck wrote: >>> On Fri, Oct 26, 2018 at 04:26:31PM +0100, Ben Dooks wrote: >>>> --- >>>> tokenize.c | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/tokenize.c b/tokenize.c >>>> index 99b9580..c32f8c7 100644 >>>> --- a/tokenize.c >>>> +++ b/tokenize.c >>>> @@ -124,7 +124,7 @@ const char *show_string(const struct string *string) >>>> char *ptr; >>>> int i; >>>> - if (!string->length) >>>> + if (!string || !string->length) >>>> return "<bad_string>"; >>> >>> I don't understand this change. What about a zero-length string ("")? >> >> >> The original checks for string->length but not if the string itself >> was NULL. I've eliminated the original mistake that triggered this. > > Oh yes, sorry. I didn't noticed that the original test checked the length > and not the pointer. > > I'll investigate why the length was tested. > > Have you an example/testcase where it crashed? I was using it in earlier code, but I removed the call to show_string I think (debugging).
diff --git a/tokenize.c b/tokenize.c index 99b9580..c32f8c7 100644 --- a/tokenize.c +++ b/tokenize.c @@ -124,7 +124,7 @@ const char *show_string(const struct string *string) char *ptr; int i; - if (!string->length) + if (!string || !string->length) return "<bad_string>"; ptr = buffer; *ptr++ = '"';