summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <lulf@carrot.studby.ntnu.no>2008-08-16 09:56:52 +0200
committerUlf Lilleengen <lulf@carrot.studby.ntnu.no>2008-08-16 09:56:52 +0200
commit543f34b80095d2819eb9500c84e7c07f2d22d0be (patch)
treed3712e644561e939ea30f5c68ce59768e6b5bb47
parent6f43620ab3bcef907c371d3673a92f7f65562ded (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.c24
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;