summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2013-02-28 18:13:24 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2013-02-28 18:13:24 +0100
commit6c2044f1e445f79d4685b471af2d9e80c009395d (patch)
tree1f9aed41b3a822b6d64d2a40dac04e8169cf5c5b
parent5b052c73fee8dcb9e6cabe136b7cbe35269429c8 (diff)
downloadlibufodecode-6c2044f1e445f79d4685b471af2d9e80c009395d.tar.gz
libufodecode-6c2044f1e445f79d4685b471af2d9e80c009395d.tar.bz2
libufodecode-6c2044f1e445f79d4685b471af2d9e80c009395d.tar.xz
libufodecode-6c2044f1e445f79d4685b471af2d9e80c009395d.zip
Fix segfault for big sensor data
-rw-r--r--test/ipedec.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/test/ipedec.c b/test/ipedec.c
index 9b8b0e0..04d3d98 100644
--- a/test/ipedec.c
+++ b/test/ipedec.c
@@ -8,6 +8,8 @@
#include <getopt.h>
#include <ufodecode.h>
+static const int MAX_ROWS = 2048;
+
typedef struct {
int clear_frame;
int dry_run;
@@ -176,13 +178,13 @@ process_file(const char *filename, Options *opts)
}
timer = timer_new ();
- pixels = (uint16_t *) malloc(2048 * 1088 * sizeof(uint16_t));
+ pixels = (uint16_t *) malloc(2048 * MAX_ROWS * sizeof(uint16_t));
n_frames = 0;
old_time_stamp = 0;
while (error != EIO) {
if (opts->clear_frame)
- memset(pixels, 0, 2048 * 1088 * sizeof(uint16_t));
+ memset(pixels, 0, 2048 * opts->rows * sizeof(uint16_t));
timer_start (timer);
error = ufo_decoder_get_next_frame(decoder, &pixels, &meta);
@@ -210,7 +212,7 @@ process_file(const char *filename, Options *opts)
printf("\n");
if (!opts->dry_run)
- fwrite(pixels, sizeof(uint16_t), 2048 * 1088, fp);
+ fwrite(pixels, sizeof(uint16_t), 2048 * opts->rows , fp);
}
else if (error != EIO) {
fprintf(stderr, "Failed to decode frame %i\n", n_frames);
@@ -218,7 +220,7 @@ process_file(const char *filename, Options *opts)
if (opts->cont) {
/* Save the frame even though we know it is corrupted */
if (!opts->dry_run)
- fwrite(pixels, sizeof(uint16_t), 2048 * 1088, fp);
+ fwrite(pixels, sizeof(uint16_t), 2048 * opts->rows, fp);
}
else
break;