Example #1
0
void agentx_parse_agentx_perms (const char *token, char *cptr)
{
    char *socket_perm, *dir_perm, *socket_user, *socket_group;

    int uid = -1;

    int gid = -1;

    int s_perm = -1;

    int d_perm = -1;

    char *st;

    DEBUGMSGTL (("agentx/config", "port permissions: %s\n", cptr));
    socket_perm = strtok_r (cptr, " \t", &st);
    dir_perm = strtok_r (NULL, " \t", &st);
    socket_user = strtok_r (NULL, " \t", &st);
    socket_group = strtok_r (NULL, " \t", &st);

    if (socket_perm)
    {
        s_perm = strtol (socket_perm, NULL, 8);
        netsnmp_ds_set_int (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCK_PERM, s_perm);
        DEBUGMSGTL (("agentx/config", "socket permissions: %o (%d)\n", s_perm, s_perm));
    }
    if (dir_perm)
    {
        d_perm = strtol (dir_perm, NULL, 8);
        netsnmp_ds_set_int (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_DIR_PERM, d_perm);
        DEBUGMSGTL (("agentx/config", "directory permissions: %o (%d)\n", d_perm, d_perm));
    }

    /*
     * Try to handle numeric UIDs or user names for the socket owner
     */
    if (socket_user)
    {
        uid = netsnmp_str_to_uid (socket_user);
        if (uid != 0)
            netsnmp_ds_set_int (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCK_USER, uid);
        DEBUGMSGTL (("agentx/config", "socket owner: %s (%d)\n", socket_user, uid));
    }

    /*
     * and similarly for the socket group ownership
     */
    if (socket_group)
    {
        gid = netsnmp_str_to_gid (socket_group);
        if (gid != 0)
            netsnmp_ds_set_int (NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCK_GROUP, gid);
        DEBUGMSGTL (("agentx/config", "socket group: %s (%d)\n", socket_group, gid));
    }
}
Example #2
0
void
sshdomain_parse_socket(const char *token, char *cptr)
{
    char *socket_perm, *socket_user, *socket_group;
    int uid = -1;
    int gid = -1;
    int s_perm = -1;
    char *st;

    DEBUGMSGTL(("ssh/config", "parsing socket info: %s\n", cptr));
    socket_perm = strtok_r(cptr, " \t", &st);
    socket_user = strtok_r(NULL, " \t", &st);
    socket_group = strtok_r(NULL, " \t", &st);

    if (socket_perm) {
        s_perm = strtol(socket_perm, NULL, 8);
        netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
                           NETSNMP_DS_SSHDOMAIN_SOCK_PERM, s_perm);
        DEBUGMSGTL(("ssh/config", "socket permissions: %o (%d)\n",
                    s_perm, s_perm));
    }
    /*
     * Try to handle numeric UIDs or user names for the socket owner
     */
    if (socket_user) {
        uid = netsnmp_str_to_uid(socket_user);
        if ( uid != 0 )
            netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
                               NETSNMP_DS_SSHDOMAIN_SOCK_USER, uid);
        DEBUGMSGTL(("ssh/config", "socket owner: %s (%d)\n",
                    socket_user, uid));
    }

    /*
     * and similarly for the socket group ownership
     */
    if (socket_group) {
        gid = netsnmp_str_to_gid(socket_group);
        if ( gid != 0 )
            netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
                               NETSNMP_DS_SSHDOMAIN_SOCK_GROUP, gid);
        DEBUGMSGTL(("ssh/config", "socket group: %s (%d)\n",
                    socket_group, gid));
    }
}