Diff for /embedaddon/sudo/plugins/sudoers/prompt.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2013/07/22 10:46:12 version 1.1.1.2, 2014/06/15 16:12:54
Line 47 Line 47
  * allocated result.  Returns the same string if there are no escapes.   * allocated result.  Returns the same string if there are no escapes.
  */   */
 char *  char *
expand_prompt(const char *old_prompt, const char *user, const char *host)expand_prompt(const char *old_prompt, const char *auth_user)
 {  {
     size_t len, n;      size_t len, n;
     int subst;      int subst;
Line 72  expand_prompt(const char *old_prompt, const char *user Line 72  expand_prompt(const char *old_prompt, const char *user
                     break;                      break;
                 case 'p':                  case 'p':
                     p++;                      p++;
                    if (def_rootpw)                    len += strlen(auth_user) - 2;
                            len += 2; 
                    else if (def_targetpw || def_runaspw) 
                            len += strlen(runas_pw->pw_name) - 2; 
                    else 
                            len += strlen(user_name) - 2; 
                     subst = 1;                      subst = 1;
                     break;                      break;
                 case 'u':                  case 'u':
Line 110  expand_prompt(const char *old_prompt, const char *user Line 105  expand_prompt(const char *old_prompt, const char *user
                     case 'h':                      case 'h':
                         p++;                          p++;
                         n = strlcpy(np, user_shost, np - endp);                          n = strlcpy(np, user_shost, np - endp);
                        if (n >= np - endp)                        if (n >= (size_t)(np - endp))
                             goto oflow;                              goto oflow;
                         np += n;                          np += n;
                         continue;                          continue;
                     case 'H':                      case 'H':
                         p++;                          p++;
                         n = strlcpy(np, user_host, np - endp);                          n = strlcpy(np, user_host, np - endp);
                        if (n >= np - endp)                        if (n >= (size_t)(np - endp))
                             goto oflow;                              goto oflow;
                         np += n;                          np += n;
                         continue;                          continue;
                     case 'p':                      case 'p':
                         p++;                          p++;
                        if (def_rootpw)                        n = strlcpy(np, auth_user, np - endp);
                                n = strlcpy(np, "root", np - endp);                        if (n >= (size_t)(np - endp))
                        else if (def_targetpw || def_runaspw) 
                                n = strlcpy(np, runas_pw->pw_name, np - endp); 
                        else 
                                n = strlcpy(np, user_name, np - endp); 
                        if (n >= np - endp) 
                                 goto oflow;                                  goto oflow;
                         np += n;                          np += n;
                         continue;                          continue;
                     case 'u':                      case 'u':
                         p++;                          p++;
                         n = strlcpy(np, user_name, np - endp);                          n = strlcpy(np, user_name, np - endp);
                        if (n >= np - endp)                        if (n >= (size_t)(np - endp))
                             goto oflow;                              goto oflow;
                         np += n;                          np += n;
                         continue;                          continue;
                     case 'U':                      case 'U':
                         p++;                          p++;
                         n = strlcpy(np,  runas_pw->pw_name, np - endp);                          n = strlcpy(np,  runas_pw->pw_name, np - endp);
                        if (n >= np - endp)                        if (n >= (size_t)(np - endp))
                             goto oflow;                              goto oflow;
                         np += n;                          np += n;
                         continue;                          continue;
Line 168  expand_prompt(const char *old_prompt, const char *user Line 158  expand_prompt(const char *old_prompt, const char *user
   
 oflow:  oflow:
     /* We pre-allocate enough space, so this should never happen. */      /* We pre-allocate enough space, so this should never happen. */
    fatalx(_("internal error, %s overflow"), "expand_prompt()");    fatalx(U_("internal error, %s overflow"), "expand_prompt()");
 }  }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>