Bug 69669 - WebKit2/Shared/APIClient.h complains that array subscript is below array bounds
Summary: WebKit2/Shared/APIClient.h complains that array subscript is below array bounds
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-07 14:27 PDT by Rafael Brandao
Modified: 2014-02-05 10:51 PST (History)
4 users (show)

See Also:


Attachments
Just ignored the warning on APIClient (1.46 KB, patch)
2011-10-07 15:22 PDT, Rafael Brandao
no flags Details | Formatted Diff | Diff
Added a check for non-negative value for array's index (1.16 KB, patch)
2011-10-12 05:45 PDT, Rafael Brandao
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Rafael Brandao 2011-10-07 14:27:09 PDT
I'm getting the following warning trying to build WebKit2 (compiling Source/WebKit2/UIProcess/WebContext.cpp):

cc1plus: warnings being treated as errors
../../../Source/WebKit2/Shared/APIClient.h: In member function 'void WebKit::WebContext::initializeInjectedBundleClient(const WKContextInjectedBundleClient*)':
../../../Source/WebKit2/Shared/APIClient.h:52:13: error: array subscript is below array bounds

I'm using openSUSE 11.4 (x86_64) and g++ (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]. I wonder if someone else have the same problem.
Comment 1 Rafael Brandao 2011-10-07 15:22:01 PDT
Created attachment 110225 [details]
Just ignored the warning on APIClient
Comment 2 Darin Adler 2011-10-07 16:26:07 PDT
Comment on attachment 110225 [details]
Just ignored the warning on APIClient

View in context: https://bugs.webkit.org/attachment.cgi?id=110225&action=review

Could you be more specific about what the warning is? Maybe it’s fixable instead of something we need to turn off.

> Source/WebKit2/Shared/APIClient.h:40
> +#pragma GCC diagnostic ignored "-Warray-bounds"

I don’t think this is the best practice for using a compiler-specific pragma. In the past we have used #if around them.

> Source/WebKit2/Shared/APIClient.h:55
> +#pragma GCC diagnostic warning "-Warray-bounds"

It’s not good to unconditionally turn a warning on even if it wasn’t on before; instead you should use push/pop.
Comment 3 Rafael Brandao 2011-10-12 05:45:22 PDT
Created attachment 110674 [details]
Added a check for non-negative value for array's index

I've googled a bit about this warning and I've found out that sometimes the compiler make some optimizations on the code and the access on arrays may be negative values after these changes (sources: http://www.mail-archive.com/gcc@gcc.gnu.org/msg46397.html and http://gcc.gnu.org/ml/gcc/2009-09/msg00270.html). So I've just added a check for non-negative values for that index and it has stopped complaining. :)
Comment 4 Alexis Menard (darktears) 2011-10-13 11:03:42 PDT
Comment on attachment 110674 [details]
Added a check for non-negative value for array's index

View in context: https://bugs.webkit.org/attachment.cgi?id=110674&action=review

> Source/WebKit2/Shared/APIClient.h:51
> +        if (client && client->version < currentVersion && client->version >= 0)

Can currentVersion be a unsigned?
Comment 5 Alexis Menard (darktears) 2011-10-13 11:14:26 PDT
(In reply to comment #4)
> (From update of attachment 110674 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=110674&action=review
> 
> > Source/WebKit2/Shared/APIClient.h:51
> > +        if (client && client->version < currentVersion && client->version >= 0)
> 
> Can currentVersion be a unsigned?

And client->version obviously. Not sure if that's possible but it looks like it could be a better fix.
Comment 6 Rafael Brandao 2011-10-13 11:44:45 PDT
(In reply to comment #4)
> (From update of attachment 110674 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=110674&action=review
> 
> > Source/WebKit2/Shared/APIClient.h:51
> > +        if (client && client->version < currentVersion && client->version >= 0)
> 
> Can currentVersion be a unsigned?

I've tried to change it to be unsigned, but then the compiler started to complain about comparison of unsigned expression < 0 being always false. The expression it is talking about is "client->version < currentVersion" when currentVersion is 0 which is possible. So I would just get into another warning.
Comment 7 Anders Carlsson 2014-02-05 10:51:12 PST
Comment on attachment 110674 [details]
Added a check for non-negative value for array's index

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.