diff options
author | Alexia Death <alexiadeath@gmail.com> | 2009-12-26 01:00:59 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-08-19 20:21:51 +0100 |
commit | 4b518bd230ef0f3a26c8eb89736815ed9334b6bb (patch) | |
tree | 0b28385e838394745c0bdc843c4b61f9a428cf33 | |
parent | daee067c4ffabff9836617b90c547873130087f1 (diff) |
Fix a segfault if a scan was shorter than 8 lines.
This segfault was caused by proceeding to free the conversion result
without checking for an error condition in image to print
data conversion.
http://lists.reactivated.net/pipermail/fprint/2009-December/001405.html
-rw-r--r-- | libfprint/imgdev.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libfprint/imgdev.c b/libfprint/imgdev.c index 4b49c73..b365d74 100644 --- a/libfprint/imgdev.c +++ b/libfprint/imgdev.c | |||
@@ -228,8 +228,12 @@ void fpi_imgdev_image_captured(struct fp_img_dev *imgdev, struct fp_img *img) | |||
228 | 228 | ||
229 | fp_img_standardize(img); | 229 | fp_img_standardize(img); |
230 | imgdev->acquire_img = img; | 230 | imgdev->acquire_img = img; |
231 | fpi_img_to_print_data(imgdev, img, &print); | 231 | r = fpi_img_to_print_data(imgdev, img, &print); |
232 | if (img->minutiae->num < MIN_ACCEPTABLE_MINUTIAE) { | 232 | if (r < 0) { |
233 | fp_dbg("image to print data conversion error: %d", r); | ||
234 | imgdev->action_result = FP_ENROLL_RETRY; | ||
235 | goto next_state; | ||
236 | } else if (img->minutiae->num < MIN_ACCEPTABLE_MINUTIAE) { | ||
233 | fp_dbg("not enough minutiae, %d/%d", img->minutiae->num, | 237 | fp_dbg("not enough minutiae, %d/%d", img->minutiae->num, |
234 | MIN_ACCEPTABLE_MINUTIAE); | 238 | MIN_ACCEPTABLE_MINUTIAE); |
235 | fp_print_data_free(print); | 239 | fp_print_data_free(print); |