Changeset 5754:b23d79c13370 in roaraudio for roard/roard.c


Ignore:
Timestamp:
11/16/12 16:49:56 (11 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

avoid getenv() and use more portable roar_env_get(). Also improved security as we enfore const now on bufferes obtained from the env.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/roard.c

    r5662 r5754  
    8888 
    8989#ifdef ROAR_SUPPORT_LISTEN 
    90 static char * server[ROAR_MAX_LISTEN_SOCKETS]; 
     90static const char * server[ROAR_MAX_LISTEN_SOCKETS]; 
    9191#endif 
    9292 
     
    561561} 
    562562 
    563 int get_listen(struct roard_listen ** sock, char *** sockname) { 
     563int get_listen(struct roard_listen ** sock, const char *** sockname) { 
    564564 int i; 
    565565 
     
    786786 
    787787int get_listen_profile (const char * name, 
    788                         int * port, char ** sockaddr, int * type, 
     788                        int * port, const char ** sockaddr, int * type, 
    789789                        int * proto, 
    790790                        int * dir, struct roar_audio_info * info) { 
     
    798798 
    799799   if ( p->type == ROAR_SOCKET_TYPE_UNIX && p->sockaddr[0] != '+' ) { 
    800     roar_env_render_path_r(buf, sizeof(buf), p->sockaddr); 
     800    if ( roar_env_render_path_r(buf, sizeof(buf), p->sockaddr) == -1 ) 
     801     continue; 
    801802   } else { 
    802803    strncpy(buf, p->sockaddr, sizeof(buf)); 
     
    822823#endif 
    823824 
    824 int add_listen (char * addr, int port, int sock_type, char * user, char * group, int proto, int dir, struct roar_audio_info * info) { 
     825int add_listen (const char * addr, int port, int sock_type, char * user, char * group, int proto, int dir, struct roar_audio_info * info) { 
    825826#if defined(ROAR_HAVE_SETGID) && defined(ROAR_HAVE_IO_POSIX) 
    826827 struct group   * grp  = NULL; 
     
    861862#ifdef ROAR_HAVE_UNIX 
    862863   if ( *addr == '/' ) { 
    863     if ( (env_roar_proxy_backup = getenv("ROAR_PROXY")) != NULL ) { 
     864    if ( (env_roar_proxy_backup = (char*)roar_env_get("ROAR_PROXY")) != NULL ) { 
    864865     env_roar_proxy_backup = roar_mm_strdup(env_roar_proxy_backup); 
    865866     unsetenv("ROAR_PROXY"); 
     
    12141215// X11: 
    12151216#ifdef ROAR_HAVE_LIBX11 
    1216 int register_x11 (int unreg, char * sockname) { 
     1217int register_x11 (int unreg, const char * sockname) { 
    12171218 struct roar_x11_connection * x11con = NULL; 
    12181219 int ret = 0; 
     
    12521253} 
    12531254 
    1254 int register_slp (int unreg, char * sockname) { 
     1255int register_slp (int unreg, const char * sockname) { 
    12551256#ifdef ROAR_HAVE_LIBSLP 
    12561257 static int regged = 0; 
    1257  static char * sn = NULL; 
     1258 static const char * sn = NULL; 
    12581259 SLPError err; 
    12591260 SLPError callbackerr; 
     
    14371438#ifdef ROAR_SUPPORT_LISTEN 
    14381439 int    port       = ROAR_DEFAULT_PORT; 
    1439  char * sock_addr  = NULL; 
     1440 const char * sock_addr  = NULL; 
    14401441 int    sock_proto = ROAR_PROTO_ROARAUDIO; 
    14411442 int    sock_dir   = -1; 
     
    14491450 int    s_prim    = 0; 
    14501451#endif 
    1451  char * o_drv     = getenv("ROAR_DRIVER"); 
    1452  char * o_dev     = getenv("ROAR_DEVICE"); 
     1452 char * o_drv     = NULL; 
     1453 char * o_dev     = NULL; 
    14531454 char * o_opts    = NULL; 
    14541455 int    o_prim    = 0; 
     
    15081509 ROAR_DBG("main(*): starting roard..."); 
    15091510 
     1511// NOTE: those to lions can generate a memory leak. The OS will clean that up on exit. 
     1512 if ( roar_env_get("ROAR_DRIVER") != NULL ) 
     1513  o_drv = roar_mm_strdup(roar_env_get("ROAR_DRIVER")); 
     1514 if ( roar_env_get("ROAR_DEVICE") != NULL ) 
     1515  o_dev = roar_mm_strdup(roar_env_get("ROAR_DEVICE")); 
     1516 
    15101517 g_standby       =  0; 
    15111518 g_autostandby   =  0; 
     
    16031610 
    16041611#ifdef ROAR_HAVE_GETUID 
    1605  if ( getuid() != 0 && getenv("HOME") != NULL ) { 
     1612 if ( getuid() != 0 && roar_env_get("HOME") != NULL ) { 
    16061613/* 
    16071614  snprintf(user_sock, 79, "%s/%s", (char*)getenv("HOME"), ROAR_DEFAULT_SOCK_USER); 
    16081615*/ 
    1609   roar_env_render_path_r(user_sock, sizeof(user_sock), "~/" ROAR_DEFAULT_SOCK_USER); 
     1616  if ( roar_env_render_path_r(user_sock, sizeof(user_sock), "~/" ROAR_DEFAULT_SOCK_USER) == -1 ) { 
     1617   strncpy(user_sock, "/NX-SOCK", sizeof(user_sock)); 
     1618  } 
    16101619  sock_addr = user_sock; 
    16111620  ROAR_DBG("main(*): setting sock_addr='%s'", sock_addr); 
     
    16131622#endif 
    16141623 
    1615  if ( getenv("ROAR_SERVER") != NULL ) 
    1616   sock_addr = getenv("ROAR_SERVER"); 
     1624 if ( roar_env_get("ROAR_SERVER") != NULL ) 
     1625  sock_addr = roar_env_get("ROAR_SERVER"); 
    16171626#endif 
    16181627 
Note: See TracChangeset for help on using the changeset viewer.