Ignore:
Timestamp:
Dec 20, 2016, 4:07:32 PM (7 years ago)
Author:
Bruno Cornec
Message:

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

Location:
branches/3.3
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/3.3/mindi-busybox/libpwdgrp/uidgid_get.c

    r3232 r3621  
    2929
    3030/* Always sets uid and gid */
    31 int FAST_FUNC get_uidgid(struct bb_uidgid_t *u, const char *ug, int numeric_ok)
     31int FAST_FUNC get_uidgid(struct bb_uidgid_t *u, const char *ug)
    3232{
    3333    struct passwd *pwd;
     
    4444        safe_strncpy(user, ug, sz);
    4545    }
    46     if (numeric_ok) {
    47         n = bb_strtou(user, NULL, 10);
    48         if (!errno) {
    49             u->uid = n;
    50             pwd = getpwuid(n);
    51             /* If we have e.g. "500" string without user */
    52             /* with uid 500 in /etc/passwd, we set gid == uid */
    53             u->gid = pwd ? pwd->pw_gid : n;
    54             goto skip;
    55         }
     46    n = bb_strtou(user, NULL, 10);
     47    if (!errno) {
     48        u->uid = n;
     49        pwd = getpwuid(n);
     50        /* If we have e.g. "500" string without user */
     51        /* with uid 500 in /etc/passwd, we set gid == uid */
     52        u->gid = pwd ? pwd->pw_gid : n;
     53        goto skip;
    5654    }
    57     /* Either it is not numeric, or caller disallows numeric username */
     55    /* it is not numeric */
    5856    pwd = getpwnam(user);
    5957    if (!pwd)
     
    6462 skip:
    6563    if (group) {
    66         if (numeric_ok) {
    67             n = bb_strtou(group, NULL, 10);
    68             if (!errno) {
    69                 u->gid = n;
    70                 return 1;
    71             }
     64        n = bb_strtou(group, NULL, 10);
     65        if (!errno) {
     66            u->gid = n;
     67            return 1;
    7268        }
    7369        gr = getgrnam(group);
     
    8076void FAST_FUNC xget_uidgid(struct bb_uidgid_t *u, const char *ug)
    8177{
    82     if (!get_uidgid(u, ug, 1))
     78    if (!get_uidgid(u, ug))
    8379        bb_error_msg_and_die("unknown user/group %s", ug);
    8480}
     
    9490{
    9591    char *group;
     92
     93    u->uid = u->gid = (gid_t)-1L;
    9694
    9795    /* Check if there is a group name */
     
    120118    unsigned u;
    121119    struct bb_uidgid_t ug;
    122     u = get_uidgid(&ug, "apache", 0);
     120    u = get_uidgid(&ug, "apache");
    123121    printf("%u = %u:%u\n", u, ug.uid, ug.gid);
    124122    ug.uid = ug.gid = 1111;
    125     u = get_uidgid(&ug, "apache", 0);
     123    u = get_uidgid(&ug, "apache");
    126124    printf("%u = %u:%u\n", u, ug.uid, ug.gid);
    127125    ug.uid = ug.gid = 1111;
    128     u = get_uidgid(&ug, "apache:users", 0);
     126    u = get_uidgid(&ug, "apache:users");
    129127    printf("%u = %u:%u\n", u, ug.uid, ug.gid);
    130128    ug.uid = ug.gid = 1111;
    131     u = get_uidgid(&ug, "apache:users", 0);
     129    u = get_uidgid(&ug, "apache:users");
    132130    printf("%u = %u:%u\n", u, ug.uid, ug.gid);
    133131    return 0;
Note: See TracChangeset for help on using the changeset viewer.