krishnaiah bommu
2019-Sep-25 07:55 UTC
[PATCH] Avoiding Segmentation fault while p points to NULL.
Signed-off-by: krishnaiah bommu <krishnaiah.bommu at intel.com> --- match.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/match.c b/match.c index fcf6959..ab74211 100644 --- a/match.c +++ b/match.c @@ -251,7 +251,8 @@ match_user(const char *user, const char *host, const char *ipaddr, pat = xstrdup(pattern); p = strchr(pat, '@'); - *p++ = '\0'; + if (p != NULL) + *p++ = '\0'; if ((ret = match_pattern(user, pat)) == 1) ret = match_host_and_ip(host, ipaddr, p); -- 2.7.4
Yuriy M. Kaminskiy
2019-Sep-25 10:33 UTC
[PATCH] Avoiding Segmentation fault while p points to NULL.
On 25.09.2019 10:55, krishnaiah bommu wrote:> Signed-off-by: krishnaiah bommu <krishnaiah.bommu at intel.com> > --- > match.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/match.c b/match.c > index fcf6959..ab74211 100644 > --- a/match.c > +++ b/match.c > @@ -251,7 +251,8 @@ match_user(const char *user, const char *host, const char *ipaddr, > > pat = xstrdup(pattern); > p = strchr(pat, '@'); > - *p++ = '\0'; > + if (p != NULL) > + *p++ = '\0';This looks impossible; actually, this strchr call is redundant, I'd rather replaced it with - p = strchr(pat, '@'); + p = pat + (p - pattern);> > if ((ret = match_pattern(user, pat)) == 1) > ret = match_host_and_ip(host, ipaddr, p); >
Damien Miller
2019-Oct-04 04:08 UTC
[PATCH] Avoiding Segmentation fault while p points to NULL.
Hi,
This patch doesn't make sense: the lines immediately before this are:
if ((p = strchr(pattern, '@')) == NULL)
return match_pattern(user, pattern);
so it's not possible for strchr(pat, '@') to return NULL here.
-d
On Wed, 25 Sep 2019, krishnaiah bommu wrote:
> Signed-off-by: krishnaiah bommu <krishnaiah.bommu at intel.com>
> ---
> match.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/match.c b/match.c
> index fcf6959..ab74211 100644
> --- a/match.c
> +++ b/match.c
> @@ -251,7 +251,8 @@ match_user(const char *user, const char *host, const
char *ipaddr,
>
> pat = xstrdup(pattern);
> p = strchr(pat, '@');
> - *p++ = '\0';
> + if (p != NULL)
> + *p++ = '\0';
>
> if ((ret = match_pattern(user, pat)) == 1)
> ret = match_host_and_ip(host, ipaddr, p);
> --
> 2.7.4
>
> _______________________________________________
> openssh-unix-dev mailing list
> openssh-unix-dev at mindrot.org
> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
>