Changeset 5754:b23d79c13370 in roaraudio for roard


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

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

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/driver_dmx.c

    r5708 r5754  
    3232 struct roar_vio_calls * vio; 
    3333 int err; 
     34 const char * dev = device; 
    3435 
    3536 if ( roar_vio_dstr_init_defaults(&def, ROAR_VIO_DEF_TYPE_NONE, O_WRONLY, 0644) == -1 ) 
     
    4243 
    4344 if ( fh == -1 ) { 
    44   if ( device == NULL ) 
    45    device = getenv("DMX"); 
     45  if ( dev == NULL ) 
     46   dev = roar_env_get("DMX"); 
    4647 
    47   if ( device == NULL ) 
    48    device = "/dev/dmx"; 
     48  if ( dev == NULL ) 
     49   dev = "/dev/dmx"; 
    4950 
    50   if ( roar_vio_open_dstr(vio, device, &def, 1) == -1 ) { 
     51  if ( roar_vio_open_dstr(vio, dev, &def, 1) == -1 ) { 
    5152   err = roar_error; 
    5253   roar_mm_free(vio); 
  • roard/include/roard.h

    r5740 r5754  
    162162 
    163163#ifdef ROAR_SUPPORT_LISTEN 
    164 int get_listen(struct roard_listen ** sock, char *** sockname); 
    165 int add_listen (char * addr, int port, int sock_type, char * user, char * group, int proto, int dir, struct roar_audio_info * info); 
     164int get_listen(struct roard_listen ** sock, const char *** sockname); 
     165int add_listen (const char * addr, int port, int sock_type, char * user, char * group, int proto, int dir, struct roar_audio_info * info); 
    166166#endif 
    167167 
  • 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.