Skip to content

Commit

Permalink
Dont manipulate pointer from getenv
Browse files Browse the repository at this point in the history
Found this when looking to fix bug #1357
Not sure if it is related.

man 3 getenv sais:
```
As  typically implemented, getenv() returns a pointer to a string within
the environment list.  The caller must take  care  not  to  modify  this
string, since that would change the environment of the process.
```
  • Loading branch information
jubalh committed Jun 12, 2020
1 parent 74ff38f commit f114193
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions src/config/files.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,12 +170,16 @@ files_get_data_path(char *data_base)
static char*
_files_get_xdg_config_home(void)
{
gchar *xdg_config_home = getenv("XDG_CONFIG_HOME");
if (xdg_config_home)
gchar *xdg_config_home_env = getenv("XDG_CONFIG_HOME");
gchar *xdg_config_home = NULL;

if (xdg_config_home_env) {
xdg_config_home = strdup(xdg_config_home_env);
g_strstrip(xdg_config_home);
}

if (xdg_config_home && (strcmp(xdg_config_home, "") != 0)) {
return strdup(xdg_config_home);
return xdg_config_home;
} else {
GString *default_path = g_string_new(getenv("HOME"));
g_string_append(default_path, "/.config");
Expand All @@ -189,12 +193,16 @@ _files_get_xdg_config_home(void)
static char*
_files_get_xdg_data_home(void)
{
gchar *xdg_data_home = getenv("XDG_DATA_HOME");
if (xdg_data_home)
gchar *xdg_data_home_env = getenv("XDG_DATA_HOME");
gchar *xdg_data_home = NULL;

if (xdg_data_home_env) {
xdg_data_home = strdup(xdg_data_home_env);
g_strstrip(xdg_data_home);
}

if (xdg_data_home && (strcmp(xdg_data_home, "") != 0)) {
return strdup(xdg_data_home);
return xdg_data_home;
} else {
GString *default_path = g_string_new(getenv("HOME"));
g_string_append(default_path, "/.local/share");
Expand Down

0 comments on commit f114193

Please sign in to comment.