[CRIU] [PATCH] mount: skip '/' only if it is there
Kirill Tkhai
ktkhai at virtuozzo.com
Tue Oct 18 01:16:02 PDT 2016
On 18.10.2016 04:40, Andrei Vagin wrote:
> From: Andrei Vagin <avagin at virtuozzo.com>
>
> If p->mountpoint is "/", off will be 0 and we will
> try to acess path[-1].
>
> On Tue, Sep 20, 2016 at 05:17:27PM +0300, Kirill Tkhai wrote:
>>
>> int off = 0;
>>
>> ...
>>
>> if (p->mountpoint[1] != 0) /* not / */
>> off = snprintf(path, len, %s, p->mountpoint);
>> if (path[off - 1] == '/') /* p->mountpoint = ./ */
>>
>> ^^^
>> The above looks like off-by-one when off == 0. Is there is
>> a condition which guarantees that off is not zero?
>
> Reported-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> Cc: Kirill Tkhai <ktkhai at virtuozzo.com>
> Signed-off-by: Andrei Vagin <avagin at virtuozzo.com>
Acked-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
> criu/path.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/criu/path.c b/criu/path.c
> index c43b5e2..57773d5 100644
> --- a/criu/path.c
> +++ b/criu/path.c
> @@ -72,10 +72,11 @@ char *mnt_get_sibling_path(struct mount_info *m,
> cut_root = cut_root_for_bind(pa->root, p->root);
> if (cut_root == NULL)
> return NULL;
> - if (p->mountpoint[1] != 0) /* not "/" */
> + if (p->mountpoint[1] != 0) /* not "/" */ {
> off = snprintf(path, len, "%s", p->mountpoint);
> - if (path[off - 1] == '/') /* p->mountpoint = "./" */
> - off--;
> + if (path[off - 1] == '/') /* p->mountpoint = "./" */
> + off--;
> + }
> len -= off;
> path += off;
>
>
More information about the CRIU
mailing list