if (_app2sd_check_is_luks_device(loopback_device) == 0) {
_W("legacy image format!");
- snprintf(dmcrypt_open_cmd, sizeof(dmcrypt_open_cmd),
+ ret = snprintf(dmcrypt_open_cmd, sizeof(dmcrypt_open_cmd),
"/bin/echo '%s' | /sbin/cryptsetup "
"-M plain -c aes-cbc-plain -h plain open %s %s",
passwd, loopback_device, dev_name);
+ if (ret < 0 || ret > sizeof(dmcrypt_open_cmd)) {
+ _E("snprintf fail\n");
+ return -1;
+ }
} else {
- snprintf(dmcrypt_open_cmd, sizeof(dmcrypt_open_cmd),
+ ret = snprintf(dmcrypt_open_cmd, sizeof(dmcrypt_open_cmd),
"/bin/echo '%s' | /sbin/cryptsetup -q luksOpen "
"%s %s",
passwd, loopback_device, dev_name);
+ if (ret < 0 || ret > sizeof(dmcrypt_open_cmd)) {
+ _E("snprintf fail\n");
+ return -1;
+ }
}
free(passwd);
_E("memory alloc failed");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
- snprintf(*dev_node, size, "/dev/mapper/%s", dev_name);
-
- return ret;
+ ret = snprintf(*dev_node, size, "/dev/mapper/%s", dev_name);
+ if (ret < 0 || ret > size) {
+ _E("snprintf fail\n");
+ return -1;
+ }
+ return 0;
}
int _app2sd_dmcrypt_close_device(const char *pkgid, uid_t uid)
free(t_dev_node);
- snprintf(dev_node, sizeof(dev_node), "/dev/mapper/%s_%d", pkgid, uid);
- snprintf(dmcrypt_close_cmd, sizeof(dmcrypt_close_cmd),
+ ret = snprintf(dev_node, sizeof(dev_node), "/dev/mapper/%s_%d", pkgid, uid);
+ if (ret < 0 || ret > sizeof(dev_node)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CLOSE_DMCRYPT_DEVICE;
+ }
+ ret = snprintf(dmcrypt_close_cmd, sizeof(dmcrypt_close_cmd),
"/sbin/cryptsetup -q luksClose %s", dev_node);
+ if (ret < 0 || ret > sizeof(dmcrypt_close_cmd)) {
+ _E("snprintf fail");
+ return APP2EXT_ERROR_CLOSE_DMCRYPT_DEVICE;
+ }
ret = system(dmcrypt_close_cmd);
if (ret) {
err_str = strerror_r(errno, err_buf, sizeof(err_buf));