return APP2EXT_SUCCESS;
_app2sd_set_application_path(pkgid, uid, app_path, sizeof(app_path));
- snprintf(temp_path, sizeof(temp_path), "%s.new", app_path);
+ ret = snprintf(temp_path, sizeof(temp_path), "%s.new", app_path);
+ if (ret < 0 || ret > sizeof(temp_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_DELETE_DIRECTORY;
+ }
/* this will delete all files under temp_path */
ret = _app2sd_delete_directory(temp_path);
}
}
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
application_path);
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
ret = mkdir(app_mmc_path, mode);
if (ret) {
if (errno != EEXIST) {
if (cmd == APP2SD_PRE_UPGRADE) {
/* application_path for {pkgid}.new */
- snprintf(temp_path, sizeof(temp_path), "%s.new",
+ ret = snprintf(temp_path, sizeof(temp_path), "%s.new",
application_path);
+ if (ret < 0 || ret > sizeof(temp_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
ret = mkdir(temp_path, mode);
if (ret) {
if (errno != EEXIST) {
}
}
/* app_mmc_path for {pkgid}.new */
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
temp_path);
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
ret = mkdir(app_mmc_path, mode);
if (ret) {
if (errno != EEXIST) {
return ret;
}
+static int __app2sd_delete_app_mmc_path(const char* application_path)
+{
+ char app_mmc_path[FILENAME_MAX];
+ int ret;
+
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ application_path);
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ return -1;
+ }
+
+ return _app2sd_delete_directory(app_mmc_path);
+}
+
int app2sd_usr_pre_app_install(const char *pkgid, GList *dir_list, int size,
uid_t uid)
{
char *sdpath;
char mmc_path[FILENAME_MAX];
char application_path[FILENAME_MAX];
- char app_mmc_path[FILENAME_MAX];
char loopback_device[FILENAME_MAX];
int ret;
int pkgmgr_ret;
_app2sd_set_application_path(pkgid, uid, application_path,
sizeof(application_path));
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
- application_path);
ret = __app2sd_finalize_device_setup(pkgid, loopback_device,
application_path, uid);
if (ret)
_E("unable to delete info");
- ret = _app2sd_delete_directory(app_mmc_path);
+ ret = __app2sd_delete_app_mmc_path(application_path);
if (ret)
_E("unable to delete the directory (%s)",
application_path);
{
char mmc_path[FILENAME_MAX];
char application_path[FILENAME_MAX];
- char app_mmc_path[FILENAME_MAX];
char loopback_device[FILENAME_MAX];
char *sdpath;
int ret;
_app2sd_set_application_path(pkgid, uid, application_path,
sizeof(application_path));
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
- application_path);
ret = __app2sd_finalize_device_setup(pkgid, loopback_device,
application_path, uid);
goto END;
}
- ret = _app2sd_delete_directory(app_mmc_path);
+ ret = __app2sd_delete_app_mmc_path(application_path);
if (ret) {
_E("unable to delete the directory (%s)", application_path);
goto END;
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
- snprintf(loopback_device, sizeof(loopback_device), "%s/%s",
+ ret = snprintf(loopback_device, sizeof(loopback_device), "%s/%s",
app2sd_path, entry->d_name);
+ if (ret < 0 || ret > sizeof(loopback_device)) {
+ _E("snprintf fail");
+ continue;
+ }
ret = _app2sd_get_info_from_db(loopback_device,
&pkgid, &uid);
if (ret) {
}
snprintf(mmc_path, sizeof(mmc_path), "%s/%s", sdpath, EXTIMG_DIR);
free(sdpath);
- snprintf(file_path, sizeof(file_path), "%s/%s", mmc_path, pkgid);
ret = _app2sd_initialize_db();
if (ret) {
} else {
free(filename);
_W("same pkg exists, remove legacy file (%s)", file_path);
+
+ ret = snprintf(file_path, sizeof(file_path), "%s/%s", mmc_path, pkgid);
+ if (ret < 0 || ret > sizeof(file_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_PKG_EXISTS;
+ }
+
ret = remove(file_path);
if (ret < 0)
_E("failed to remove, errno(%d)", errno);
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
- snprintf(loopback_device, sizeof(loopback_device), "%s/%s",
+ ret = snprintf(loopback_device, sizeof(loopback_device), "%s/%s",
app2sd_path, entry->d_name);
+ if (ret < 0 || ret > sizeof(loopback_device)) {
+ _E("snprintf fail");
+ pkgmgr_client_free(pc);
+ closedir(dir);
+ return -1;
+ }
/* check losetup image */
if (_app2sd_crypt_is_luks(loopback_device) == 0) {
/* call installer backend
bool is_dup, uid_t uid, char **dev_node)
{
int ret;
+ int size;
char *passwd;
char dev_name[BUF_SIZE];
- char buf[BUF_SIZE];
if (pkgid == NULL || loopback_device == NULL) {
_E("invalid argument");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
- snprintf(buf, sizeof(buf), "/dev/mapper/%s", dev_name);
- *dev_node = strdup(buf);
+ size = strlen("/dev/mapper/%s") + strlen(dev_name) + 1;
+ *dev_node = (char *)malloc(size);
if (*dev_node == NULL) {
_E("memory alloc failed");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
+ snprintf(*dev_node, size, "/dev/mapper/%s", dev_name);
return ret;
}
}
close(fd);
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
application_path);
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_OPEN_DIR;
+ }
fd = open(app_mmc_path, O_RDONLY | O_DIRECTORY);
if (fd < 0) {
_E("path(%s) error(%d)", app_mmc_path, errno);
if (mount_type != MOUNT_TYPE_RD &&
mount_type != MOUNT_TYPE_RD_REMOUNT) {
/* change lost+found permission */
- snprintf(temp_path, sizeof(temp_path), "%s/lost+found",
+ ret = snprintf(temp_path, sizeof(temp_path), "%s/lost+found",
app_mmc_path);
+ if (ret < 0 || ret > sizeof(temp_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
ret = _app2sd_make_directory(temp_path, uid);
if (ret) {
_E("create directory(%s) failed", temp_path);
uid);
}
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
application_path);
- snprintf(app_archive_path, sizeof(app_archive_path), "%s/.archive",
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
+ ret = snprintf(app_archive_path, sizeof(app_archive_path), "%s/.archive",
application_path);
+ if (ret < 0 || ret > sizeof(app_archive_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CREATE_DIRECTORY;
+ }
ret = mkdir(app_mmc_path, mode);
if (ret) {
if (dir_detail == NULL || dir_detail->name == NULL ||
dir_detail->type != APP2EXT_DIR_RO)
continue;
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
application_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_MMC_STATUS;
+ }
_D("cal size of app dirs, temp_dir_path(%s)", temp_dir_path);
total_size += _app2sd_calculate_dir_size(temp_dir_path);
}
if (dir_detail == NULL || dir_detail->name == NULL ||
dir_detail->type != APP2EXT_DIR_RO)
continue;
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
application_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ ret = APP2EXT_ERROR_MOVE;
+ goto ERR;
+ }
_D("app2archive, temp_dir_path(%s)", temp_dir_path);
ret = _app2sd_move_to_archive(temp_dir_path, app_archive_path);
if (ret) {
if (dir_detail == NULL || dir_detail->name == NULL ||
dir_detail->type != APP2EXT_DIR_RO)
continue;
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
app_archive_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ ret = APP2EXT_ERROR_COPY_DIRECTORY;
+ goto ERR;
+ }
_D("archive2mmc, temp_dir_path(%s)", temp_dir_path);
ret = _app2sd_copy_dir(temp_dir_path, app_mmc_path);
if (ret) {
goto ERR;
}
- snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
+ ret = snprintf(app_mmc_path, sizeof(app_mmc_path), "%s/.mmc",
application_path);
- snprintf(app_archive_path, sizeof(app_archive_path), "%s/.archive",
+ if (ret < 0 || ret > sizeof(app_mmc_path)) {
+ _E("snprintf fail");
+ ret = -1;
+ goto ERR;
+ }
+ ret = snprintf(app_archive_path, sizeof(app_archive_path), "%s/.archive",
application_path);
+ if (ret < 0 || ret > sizeof(app_archive_path)) {
+ _E("snprintf fail");
+ ret = -1;
+ goto ERR;
+ }
ret = mkdir(app_archive_path, mode);
if (ret) {
dir_detail->type != APP2EXT_DIR_RO)
continue;
/* archiving code */
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
app_mmc_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ ret = -1;
+ goto ERR;
+ }
_D("mmc2archive, temp_dir_path(%s)", temp_dir_path);
ret = _app2sd_copy_dir(temp_dir_path, app_archive_path);
if (ret) {
goto ERR;
}
/* delete the symbolic link files [bin, lib, res]*/
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
application_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ ret = -1;
+ goto ERR;
+ }
_D("unlink, temp_dir_path(%s)", temp_dir_path);
ret = unlink(temp_dir_path);
if (ret) {
}
}
/* Copy content to destination */
- snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
+ ret = snprintf(temp_dir_path, sizeof(temp_dir_path), "%s/%s",
app_archive_path, dir_detail->name);
+ if (ret < 0 || ret > sizeof(temp_dir_path)) {
+ _E("snprintf fail");
+ ret = -1;
+ goto ERR;
+ }
_D("archive2app, temp_dir_path(%s)", temp_dir_path);
ret = _app2sd_copy_dir(temp_dir_path, application_path);
if (ret) {