Make sure target buffer for readlink is large enough and gets NULL-terminated
diff --git a/src/ideviceinstaller.c b/src/ideviceinstaller.c
index 55f3062..3052577 100644
--- a/src/ideviceinstaller.c
+++ b/src/ideviceinstaller.c
@@ -542,9 +542,13 @@
 
 #ifdef HAVE_LSTAT
 			if ((lstat(fpath, &st) == 0) && S_ISLNK(st.st_mode)) {
-				char *target = (char *)malloc(st.st_size);
-				readlink(fpath, target, st.st_size);
-				afc_make_link(afc, AFC_SYMLINK, target, fpath);
+				char *target = (char *)malloc(st.st_size+1);
+				if (readlink(fpath, target, st.st_size+1) < 0) {
+					fprintf(stderr, "ERROR: readlink: %s (%d)\n", strerror(errno), errno);
+				} else {
+					target[st.st_size] = '\0';
+					afc_make_link(afc, AFC_SYMLINK, target, fpath);
+				}
 				free(target);
 			} else
 #endif