2017-02-09 23:01:24

by Frank Sorenson

[permalink] [raw]
Subject: [nfs-utils PATCH V2 1/2] Replace non-thread-safe strtok function calls in gssd

Author: Frank Sorenson <[email protected]>
Date: 2017-02-09 16:35:51 -0600

gssd: replace non-thread-safe strtok with strsep

gssd uses the non-thread-safe strtok() function, which
can lead to incorrect program behavior.

Replace strtok() with the thread-safe strsep().

Signed-off-by: Frank Sorenson <[email protected]>

diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c
index d74d372..30c6ace 100644
--- a/utils/gssd/gssd_proc.c
+++ b/utils/gssd/gssd_proc.c
@@ -729,10 +729,11 @@ handle_gssd_upcall(struct clnt_upcall_info *info)
char *target = NULL;
char *service = NULL;
char *enctypes = NULL;
+ char *pbuf = info->lbuf;

printerr(2, "\n%s: '%s' (%s)\n", __func__, info->lbuf, clp->relpath);

- for (p = strtok(info->lbuf, " "); p; p = strtok(NULL, " ")) {
+ while ((p = strsep(&pbuf, " "))) {
if (!strncmp(p, "mech=", strlen("mech=")))
mech = p + strlen("mech=");
else if (!strncmp(p, "uid=", strlen("uid=")))


2017-02-16 10:23:41

by Steve Dickson

[permalink] [raw]
Subject: Re: [nfs-utils PATCH V2 1/2] Replace non-thread-safe strtok function calls in gssd



On 02/09/2017 06:01 PM, Frank Sorenson wrote:
> Author: Frank Sorenson <[email protected]>
> Date: 2017-02-09 16:35:51 -0600
>
> gssd: replace non-thread-safe strtok with strsep
>
> gssd uses the non-thread-safe strtok() function, which
> can lead to incorrect program behavior.
>
> Replace strtok() with the thread-safe strsep().
>
> Signed-off-by: Frank Sorenson <[email protected]>
Committed....

steved.
>
> diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c
> index d74d372..30c6ace 100644
> --- a/utils/gssd/gssd_proc.c
> +++ b/utils/gssd/gssd_proc.c
> @@ -729,10 +729,11 @@ handle_gssd_upcall(struct clnt_upcall_info *info)
> char *target = NULL;
> char *service = NULL;
> char *enctypes = NULL;
> + char *pbuf = info->lbuf;
>
> printerr(2, "\n%s: '%s' (%s)\n", __func__, info->lbuf, clp->relpath);
>
> - for (p = strtok(info->lbuf, " "); p; p = strtok(NULL, " ")) {
> + while ((p = strsep(&pbuf, " "))) {
> if (!strncmp(p, "mech=", strlen("mech=")))
> mech = p + strlen("mech=");
> else if (!strncmp(p, "uid=", strlen("uid=")))
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html