diff options
author | Ulf Lilleengen <lulf@carrot.studby.ntnu.no> | 2008-08-16 09:56:52 +0200 |
---|---|---|
committer | Ulf Lilleengen <lulf@carrot.studby.ntnu.no> | 2008-08-16 09:56:52 +0200 |
commit | 543f34b80095d2819eb9500c84e7c07f2d22d0be (patch) | |
tree | d3712e644561e939ea30f5c68ce59768e6b5bb47 | |
parent | 6f43620ab3bcef907c371d3673a92f7f65562ded (diff) |
- Simplify mfs_get_home path, using asprintf, and remove potential usage of NULL
pointers.
- Don't use memory that might be NULL pointer after allocating trackno, as well
as check if malloc returned NULL in escape.
-rw-r--r-- | src/mfs_subr.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/mfs_subr.c b/src/mfs_subr.c index d3d3c0b..d70bade 100644 --- a/src/mfs_subr.c +++ b/src/mfs_subr.c @@ -58,21 +58,17 @@ sqlite3 *handle; */ char *mfs_get_home_path(const char *extra) { - int hlen, exlen = 0; + int hlen, exlen; char *res; const char *home = getenv("HOME"); hlen = strlen(home); - if (extra) - exlen = strlen(extra); + exlen = (extra != NULL) ? strlen(extra) : 0; - res = malloc(sizeof(char) * (hlen + exlen + 2)); - strcpy(res, home); - - if (extra) { - res[hlen] = '/'; - strcpy(res + hlen + 1, extra); - } + if (exlen > 0) + asprintf(&res, "%s/%s", home, extra); + else + asprintf(&res, "%s", home); return (res); } @@ -399,8 +395,9 @@ mfs_scan(char *filepath) sqlite3_bind_int(st, 5, year); if (track) { - trackno = malloc(sizeof(char) * 9); - sprintf(trackno, "%02d", track); + asprintf(&trackno, "%02d", track); + if (trackno == NULL) + break; sqlite3_bind_text(st, 6, trackno, -1, SQLITE_TRANSIENT); free(trackno); } else { @@ -477,6 +474,9 @@ mfs_escape_sqlstring(const char *str) int len = strlen(str) + 1; escaped = malloc(sizeof(char) * len); + if (escaped == NULL) + return (NULL); + p = escaped; q = str; |