X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fconf.c;h=b6632fcb144c052fa0ef4a9652843a074abd64c7;hb=1cb514cec8d71a17376a1f2e78f0a68f2f410521;hp=50af2289d11f0d83fd636cb136e504b3887c9be3;hpb=d6a07e7da56c327a0c22c9113a0a9fa7bf8197c6;p=lttng-tools.git diff --git a/src/bin/lttng/conf.c b/src/bin/lttng/conf.c index 50af2289d..b6632fcb1 100644 --- a/src/bin/lttng/conf.c +++ b/src/bin/lttng/conf.c @@ -29,10 +29,8 @@ #include "conf.h" /* - * config_get_file_path - * - * Returns the path with '/CONFIG_FILENAME' added to it; - * path will be NULL if an error occurs. + * Returns the path with '/CONFIG_FILENAME' added to it; + * path will be NULL if an error occurs. */ char *config_get_file_path(char *path) { @@ -42,16 +40,15 @@ char *config_get_file_path(char *path) ret = asprintf(&file_path, "%s/%s", path, CONFIG_FILENAME); if (ret < 0) { ERR("Fail allocating config file path"); + file_path = NULL; } return file_path; } /* - * open_config - * - * Returns an open FILE pointer to the config file; - * on error, NULL is returned. + * Returns an open FILE pointer to the config file; + * on error, NULL is returned. */ static FILE *open_config(char *path, const char *mode) { @@ -69,18 +66,14 @@ static FILE *open_config(char *path, const char *mode) } error: - if (file_path) { - free(file_path); - } + free(file_path); return fp; } /* - * create_config_file - * - * Creates the empty config file at the path. - * On success, returns 0; - * on error, returns -1. + * Creates the empty config file at the path. + * On success, returns 0; + * on error, returns -1. */ static int create_config_file(char *path) { @@ -101,11 +94,9 @@ error: } /* - * write_config - * - * Append data to the config file in file_path - * On success, returns 0; - * on error, returns -1. + * Append data to the config file in file_path + * On success, returns 0; + * on error, returns -1. */ static int write_config(char *file_path, size_t size, char *data) { @@ -124,15 +115,15 @@ static int write_config(char *file_path, size_t size, char *data) if (len != 1) { ret = -1; } - fclose(fp); + if (fclose(fp)) { + PERROR("close write_config"); + } end: return ret; } /* - * config_get_default_path - * - * Returns the HOME directory path. Caller MUST NOT free(3) the return pointer. + * Returns the HOME directory path. Caller MUST NOT free(3) the return pointer. */ char *config_get_default_path(void) { @@ -140,9 +131,7 @@ char *config_get_default_path(void) } /* - * config_destroy - * - * Destroys directory config and file config. + * Destroys directory config and file config. */ void config_destroy(char *path) { @@ -168,11 +157,8 @@ end: } /* - * config_destroy_default - * - * Destroys the default config + * Destroys the default config */ - void config_destroy_default(void) { char *path = config_get_default_path(); @@ -183,9 +169,7 @@ void config_destroy_default(void) } /* - * config_exists - * - * Returns 1 if config exists, 0 otherwise + * Returns 1 if config exists, 0 otherwise */ int config_exists(const char *path) { @@ -200,11 +184,9 @@ int config_exists(const char *path) } /* - * config_read_session_name - * - * Returns the session name from the config file. - * The caller is responsible for freeing the returned string. - * On error, NULL is returned. + * Returns the session name from the config file. + * The caller is responsible for freeing the returned string. + * On error, NULL is returned. */ char *config_read_session_name(char *path) { @@ -222,6 +204,7 @@ char *config_read_session_name(char *path) if (fp == NULL) { ERR("Can't find valid lttng config %s/.lttngrc", path); MSG("Did you create a session? (lttng create )"); + free(session_name); goto error; } @@ -240,35 +223,42 @@ char *config_read_session_name(char *path) } error_close: - fclose(fp); + free(session_name); + ret = fclose(fp); + if (ret < 0) { + PERROR("close config read session name"); + } error: return NULL; found: - fclose(fp); + ret = fclose(fp); + if (ret < 0) { + PERROR("close config read session name found"); + } return session_name; } /* - * config_add_session_name - * - * Write session name option to the config file. - * On success, returns 0; - * on error, returns -1. + * Write session name option to the config file. + * On success, returns 0; + * on error, returns -1. */ int config_add_session_name(char *path, char *name) { int ret; - char session_name[NAME_MAX]; + char *attr = "session="; + /* Max name len accepted plus attribute's len and the NULL byte. */ + char session_name[NAME_MAX + strlen(attr) + 1]; /* * With GNU C < 2.1, snprintf returns -1 if the target buffer is too small; * With GNU C >= 2.1, snprintf returns the required size (excluding closing null) */ - ret = snprintf(session_name, NAME_MAX, "session=%s\n", name); - if ((ret < 0) || (ret >= NAME_MAX)) { + ret = snprintf(session_name, sizeof(session_name), "%s%s\n", attr, name); + if (ret < 0) { ret = -1; goto error; } @@ -278,11 +268,9 @@ error: } /* - * config_init - * - * Init configuration directory and file. - * On success, returns 0; - * on error, returns -1. + * Init configuration directory and file. + * On success, returns 0; + * on error, returns -1. */ int config_init(char *session_name) {