RFR: 8146115 - Improve docker container detection and resource configuration usage

Kim Barrett kim.barrett at oracle.com
Mon Oct 23 04:52:18 UTC 2017


> On Sep 27, 2017, at 9:20 PM, David Holmes <david.holmes at oracle.com> wrote:
>>> 62     void set_subsystem_path(char *cgroup_path) {
>>> 
>>> If this takes a "const char*" will it save you from casting string literals to "char*" elsewhere?
>> I tried several different ways of declaring the container accessor functions and
>> always ended up with warnings due to scanf not being able to validate arguments
>> since the format string didn’t end up being a string literal.  I originally was using templates
>> and then ended up with the macros.  I tried several different casts but could resolve the problem.
> 
> Sounds like something Kim Barrett should take a look at :)

Fortunately, I just happened by.

The warnings are because we compile with -Wformat=2, which enables
-Wformat-nonliteral (among other things).

Use PRAGMA_FORMAT_NONLITERAL_IGNORED, e.g.

PRAGMA_DIAG_PUSH
PRAGMA_FORMAT_NONLITERAL_IGNORED
<function definition>
PRAGMA_DIAG_POP

That will silence warnings about sscanf (or anything else!) with a
non-literal format string within that <function definition>.

Also, while I was looking at this, I noticed that in
get_subsytem_file_contents_##return_name, if the sum of the lengths of
get_subsystem_path() and filename is >= MAXBUF, then we can end up
reading from a file other than the one intended, if such a file
exists.  That seems like it might be bad.

Also, the filename argument should be const char*.



More information about the hotspot-dev mailing list