while (ep && *ep)
{
+ int sh_pathlen;
PATH_VAR (sh_path);
*ep = '\0';
- snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token);
- if (_access (sh_path, 0) == 0)
+ sh_pathlen = snprintf (sh_path, GET_PATH_MAX, "%s/%s",
+ p, search_token);
+ if (0 <= sh_pathlen && sh_pathlen < GET_PATH_MAX
+ && _access (sh_path, 0) == 0)
{
default_shell = xstrdup (w32ify (sh_path, 0));
sh_found = 1;
/* be sure to check last element of Path */
if (p && *p)
{
+ int sh_pathlen;
+
PATH_VAR (sh_path);
- snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token);
- if (_access (sh_path, 0) == 0)
+ sh_pathlen = snprintf (sh_path, GET_PATH_MAX, "%s/%s",
+ p, search_token);
+ if (0 <= sh_pathlen && sh_pathlen < GET_PATH_MAX
+ && _access (sh_path, 0) == 0)
{
default_shell = xstrdup (w32ify (sh_path, 0));
sh_found = 1;