[lxc-devel] [PATCH] clang: Remaining changes
Serge Hallyn
serge.hallyn at ubuntu.com
Thu Oct 24 04:04:58 UTC 2013
Quoting Stéphane Graber (stgraber at ubuntu.com):
> Those are a bit less obvious than those I pushed directly to master.
> All those changes were required to build LXC under clang here.
>
> With this, gcc can be replaced by clang to build LXC so long as you're
> not using the python3 binding (as python extensions can't be built under
> clang at the moment).
>
> For reference, the clang output for those is: http://paste.ubuntu.com/6292460/
>
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
One comment,
> ---
> src/lxc/caps.c | 2 +-
> src/lxc/commands.c | 4 ++--
> src/lxc/conf.c | 4 ++--
> 3 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/src/lxc/caps.c b/src/lxc/caps.c
> index bcbb859..89b87af 100644
> --- a/src/lxc/caps.c
> +++ b/src/lxc/caps.c
> @@ -204,7 +204,7 @@ static int _real_caps_last_cap(void)
> buf[n] = '\0';
> result = strtol(buf, &ptr, 10);
> if (!ptr || (*ptr != '\0' && *ptr != '\n') ||
> - result == LONG_MIN || result == LONG_MAX)
> + result == INT_MIN || result == INT_MAX)
Hi Stéphane,
probably the original code was my fault, but this is weird. The
check doesn't actually guarantee anything, so per the NOTES section
in strtoul(3) man page I think we should set errno to 0 before the
strtol call, and check errno afterward. Then drop these MIN/MAX
checks here, leaving the < 0 check below.
Your patch wouldn't break anything so if you like we can just apply
this and I'll push an update to do the above in the morning.
> result = -1;
> }
>
> diff --git a/src/lxc/commands.c b/src/lxc/commands.c
> index 33821dd..3e44ef3 100644
> --- a/src/lxc/commands.c
> +++ b/src/lxc/commands.c
> @@ -109,7 +109,7 @@ static const char *lxc_cmd_str(lxc_cmd_t cmd)
> [LXC_CMD_GET_CONFIG_ITEM] = "get_config_item",
> };
>
> - if (cmd < 0 || cmd >= LXC_CMD_MAX)
> + if (cmd >= LXC_CMD_MAX)
> return "Unknown cmd";
> return cmdname[cmd];
> }
> @@ -735,7 +735,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
> [LXC_CMD_GET_CONFIG_ITEM] = lxc_cmd_get_config_item_callback,
> };
>
> - if (req->cmd < 0 || req->cmd >= LXC_CMD_MAX) {
> + if (req->cmd >= LXC_CMD_MAX) {
> ERROR("bad cmd %d received", req->cmd);
> return -1;
> }
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 208c08b..0724e3f 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -1948,7 +1948,7 @@ static int setup_caps(struct lxc_list *caps)
> * we don't */
> capid = strtol(drop_entry, &ptr, 10);
> if (!ptr || *ptr != '\0' ||
> - capid == LONG_MIN || capid == LONG_MAX)
> + capid == INT_MIN || capid == INT_MAX)
> /* not a valid number */
> capid = -1;
> else if (capid > lxc_caps_last_cap())
> @@ -2013,7 +2013,7 @@ static int dropcaps_except(struct lxc_list *caps)
> * we don't */
> capid = strtol(keep_entry, &ptr, 10);
> if (!ptr || *ptr != '\0' ||
> - capid == LONG_MIN || capid == LONG_MAX)
> + capid == INT_MIN || capid == INT_MAX)
> /* not a valid number */
> capid = -1;
> else if (capid > lxc_caps_last_cap())
> --
> 1.8.3.2
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list