[PATCH] vfs_fruit TM size calculation on 32-bit platforms
Ralph Böhme
slow at samba.org
Thu Feb 22 15:20:49 UTC 2018
Hi!
Attached is a simple fix for a bug in vfs_fruit where I used the wrong integer
type for file sizes: size_t, instead of off_t.
Bug: ...
-slow
--
Ralph Boehme, Samba Team https://samba.org/
Samba Developer, SerNet GmbH https://sernet.de/en/samba/
GPG Key Fingerprint: FAE2 C608 8A24 2520 51C5 59E4 AA1E 9B71 2639 9E46
-------------- next part --------------
From f78fe9470c66bb30f26ed9c27a432ff8e09e1563 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
Date: Thu, 22 Feb 2018 15:52:46 +0100
Subject: [PATCH] vfs_fruit: use off_t, not size_t for TM size calculations
size_t is only a 32-bit integer on 32-bit platforms. We must use off_t
for file sizes.
https://bugzilla.samba.org/show_bug.cgi?id=13296
Signed-off-by: Ralph Boehme <slow at samba.org>
---
source3/modules/vfs_fruit.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index 40ee2553a12..ec76f718c37 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -141,7 +141,7 @@ struct fruit_config_data {
bool aapl_zero_file_id;
const char *model;
bool time_machine;
- size_t time_machine_max_size;
+ off_t time_machine_max_size;
/*
* Additional options, all enabled by default,
@@ -1989,8 +1989,7 @@ static int init_fruit_config(vfs_handle_struct *handle)
SNUM(handle->conn), FRUIT_PARAM_TYPE_NAME,
"time machine max size", NULL);
if (tm_size_str != NULL) {
- config->time_machine_max_size =
- (size_t)conv_str_size(tm_size_str);
+ config->time_machine_max_size = conv_str_size(tm_size_str);
}
SMB_VFS_HANDLE_SET_DATA(handle, config,
@@ -6321,7 +6320,7 @@ static bool fruit_get_bandsize(vfs_handle_struct *handle,
}
struct fruit_disk_free_state {
- size_t total_size;
+ off_t total_size;
};
static bool fruit_get_num_bands(vfs_handle_struct *handle,
@@ -6394,7 +6393,7 @@ static bool fruit_tmsize_do_dirent(vfs_handle_struct *handle,
size_t sparsebundle_strlen = strlen("sparsebundle");
size_t bandsize = 0;
size_t nbands;
- double tm_size;
+ off_t tm_size;
p = strstr(e->d_name, "sparsebundle");
if (p == NULL) {
@@ -6444,8 +6443,8 @@ static bool fruit_tmsize_do_dirent(vfs_handle_struct *handle,
state->total_size += tm_size;
- DBG_DEBUG("[%s] tm_size [%.0f] total_size [%zu]\n",
- e->d_name, tm_size, state->total_size);
+ DBG_DEBUG("[%s] tm_size [%jd] total_size [%jd]\n",
+ e->d_name, (intmax_t)tm_size, (intmax_t)state->total_size);
return true;
}
--
2.13.6
More information about the samba-technical
mailing list