1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
From 57ee59ceeabf4f12156bb2e6e7f501517a8c6efb Mon Sep 17 00:00:00 2001
From: Dominic Spill <dominicgs@gmail.com>
Date: Thu, 14 Jan 2016 17:33:00 +0000
Subject: [PATCH 65/68] Add error handling to hackrf_trasfer argument parsing
---
host/hackrf-tools/src/hackrf_transfer.c | 53 +++++++++++++++++----------------
1 file changed, 27 insertions(+), 26 deletions(-)
--- a/host/hackrf-tools/src/hackrf_transfer.c
+++ b/host/hackrf-tools/src/hackrf_transfer.c
@@ -483,6 +483,8 @@
char date_time[DATE_TIME_MAX_LEN];
const char* path = NULL;
const char* serial_number = NULL;
+ char* endptr;
+ double f_hz;
int result;
time_t rawtime;
struct tm * timeinfo;
@@ -516,33 +518,33 @@
break;
case 'f':
- {
- double f = atof(optarg);
- if (f < 0)
+ f_hz = strtod(optarg, &endptr);
+ if (optarg == endptr) {
+ result = HACKRF_ERROR_INVALID_PARAM;
break;
- freq_hz = f;
- automatic_tuning = true;
}
+ freq_hz = f_hz;
+ automatic_tuning = true;
break;
case 'i':
- {
- double f = atof(optarg);
- if (f < 0)
+ f_hz = strtod(optarg, &endptr);
+ if (optarg == endptr) {
+ result = HACKRF_ERROR_INVALID_PARAM;
break;
- if_freq_hz = f;
- if_freq = true;
}
+ if_freq_hz = f_hz;
+ if_freq = true;
break;
case 'o':
- {
- double f = atof(optarg);
- if (f < 0)
+ f_hz = strtod(optarg, &endptr);
+ if (optarg == endptr) {
+ result = HACKRF_ERROR_INVALID_PARAM;
break;
- lo_freq_hz = f;
- lo_freq = true;
}
+ lo_freq_hz = f_hz;
+ lo_freq = true;
break;
case 'm':
@@ -573,13 +575,13 @@
break;
case 's':
- {
- double f = atof(optarg);
- if (f < 0)
+ f_hz = strtod(optarg, &endptr);
+ if (optarg == endptr) {
+ result = HACKRF_ERROR_INVALID_PARAM;
break;
- sample_rate_hz = f;
- sample_rate = true;
}
+ sample_rate_hz = f_hz;
+ sample_rate = true;
break;
case 'n':
@@ -589,14 +591,13 @@
break;
case 'b':
- {
- double f = atof(optarg);
- if (f < 0)
+ f_hz = strtod(optarg, &endptr);
+ if (optarg == endptr) {
+ result = HACKRF_ERROR_INVALID_PARAM;
break;
-
- baseband_filter_bw_hz = f;
- baseband_filter_bw = true;
}
+ baseband_filter_bw_hz = f_hz;
+ baseband_filter_bw = true;
break;
case 'c':
|