From: Keith Packard Date: Sat, 8 Jan 2011 04:25:09 +0000 (-0800) Subject: altos: Check requested log max size against available space X-Git-Tag: debian/0.8.1+36+gd794ef9~10 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=00891b40754962ef6530b237ef52017bb58112d5 altos: Check requested log max size against available space Make sure the amount of memory requested for a single log isn't more than is available on the device. Signed-off-by: Keith Packard --- diff --git a/src/ao_config.c b/src/ao_config.c index a3e0a64f..e97b7eb1 100644 --- a/src/ao_config.c +++ b/src/ao_config.c @@ -305,17 +305,22 @@ ao_config_log_show(void) __reentrant void ao_config_log_set(void) __reentrant { + uint16_t block = (uint16_t) (ao_storage_block >> 10); + uint16_t config = (uint16_t) (ao_storage_config >> 10); + ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; if (ao_log_present()) printf("Storage must be empty before changing log size\n"); - else if (ao_storage_block > 1024 && (ao_cmd_lex_u32 & ((ao_storage_block >> 10) - 1))) - printf("Flight log size must be multiple of %ld\n", ao_storage_block >> 10); + else if (block > 1024 && (ao_cmd_lex_i & (block - 1))) + printf("Flight log size must be multiple of %d kB\n", block); + else if (ao_cmd_lex_i > config) + printf("Flight log max %d kB\n", config); else { ao_mutex_get(&ao_config_mutex); _ao_config_get(); - ao_config.flight_log_max = ao_cmd_lex_u32 << 10; + ao_config.flight_log_max = (uint32_t) ao_cmd_lex_i << 10; ao_config_dirty = 1; ao_mutex_put(&ao_config_mutex); ao_config_log_show();