From f2c98c551bfe50a155bf73a01affa8a5350e2782 Mon Sep 17 00:00:00 2001
From: Ezo <ezo.dev@gmail.com>
Date: Wed, 20 Nov 2013 07:00:17 +0000
Subject: [PATCH] Fixed resource leak and possible strings without
null-terminator
---
src/system/kernel/vm/VMAnonymousCache.cpp | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp
index d0337ba..558ea26 100644
a
|
b
|
swap_init_post_modules()
|
1452 | 1452 | dev_t swapDeviceID = -1; |
1453 | 1453 | VolumeInfo selectedVolume = {}; |
1454 | 1454 | |
| 1455 | bool settingsUnloaded = false; |
1455 | 1456 | void* settings = load_driver_settings("virtual_memory"); |
1456 | 1457 | |
1457 | 1458 | if (settings != NULL) { |
… |
… |
swap_init_post_modules()
|
1484 | 1485 | // User specified a size / volume that seems valid |
1485 | 1486 | swapAutomatic = false; |
1486 | 1487 | swapSize = atoll(size); |
1487 | | strncpy(selectedVolume.name, volume, |
| 1488 | strlcpy(selectedVolume.name, volume, |
1488 | 1489 | sizeof(selectedVolume.name)); |
1489 | | strncpy(selectedVolume.device, device, |
| 1490 | strlcpy(selectedVolume.device, device, |
1490 | 1491 | sizeof(selectedVolume.device)); |
1491 | | strncpy(selectedVolume.filesystem, filesystem, |
| 1492 | strlcpy(selectedVolume.filesystem, filesystem, |
1492 | 1493 | sizeof(selectedVolume.filesystem)); |
1493 | 1494 | selectedVolume.capacity = atoll(capacity); |
1494 | 1495 | } else { |
… |
… |
swap_init_post_modules()
|
1499 | 1500 | } |
1500 | 1501 | } |
1501 | 1502 | unload_driver_settings(settings); |
| 1503 | settingsUnloaded = true; |
1502 | 1504 | } |
1503 | 1505 | } |
1504 | 1506 | |
… |
… |
swap_init_post_modules()
|
1514 | 1516 | |
1515 | 1517 | if (!swapEnabled || swapSize < B_PAGE_SIZE) { |
1516 | 1518 | dprintf("%s: virtual_memory is disabled\n", __func__); |
| 1519 | if(!settingsUnloaded) |
| 1520 | unload_driver_settings(settings); |
1517 | 1521 | return; |
1518 | 1522 | } |
1519 | 1523 | |
… |
… |
swap_init_post_modules()
|
1593 | 1597 | if (fd < 0) { |
1594 | 1598 | dprintf("%s: Can't open/create %s: %s\n", __func__, |
1595 | 1599 | swapPath, strerror(errno)); |
| 1600 | if(!settingsUnloaded) |
| 1601 | unload_driver_settings(settings); |
1596 | 1602 | return; |
1597 | 1603 | } |
1598 | 1604 | |