using only px4_getopt() and never the unsafe getopt()

using only <px4_getopt.h> as include, cleanup related includes
added check that all the option are valid (myoptind >= argc). if there are invalid options on some script that might now lead not to run commands
This commit is contained in:
bazooka joe
2019-02-21 09:45:45 +01:00
committed by Beat Küng
parent 3db901b238
commit 922c19aa9c
20 changed files with 131 additions and 50 deletions
+13 -3
View File
@@ -73,7 +73,7 @@
#include <uORB/uORB.h>
#include <float.h>
#include <getopt.h>
#include <px4_getopt.h>
#include <lib/conversion/rotation.h>
#include "hmc5883.h"
@@ -1701,7 +1701,11 @@ usage()
int
hmc5883_main(int argc, char *argv[])
{
int myoptind = 1;
int ch;
const char *myoptarg = nullptr;
enum HMC5883_BUS busid = HMC5883_BUS_ALL;
enum Rotation rotation = ROTATION_NONE;
bool calibrate = false;
@@ -1712,7 +1716,7 @@ hmc5883_main(int argc, char *argv[])
exit(0);
}
while ((ch = getopt(argc, argv, "XISR:CT")) != EOF) {
while ((ch = px4_getopt(argc, argv, "XISR:CT", &myoptind, &myoptarg)) != EOF) {
switch (ch) {
case 'R':
rotation = (enum Rotation)atoi(optarg);
@@ -1746,7 +1750,13 @@ hmc5883_main(int argc, char *argv[])
}
}
const char *verb = argv[optind];
if (myoptind >= argc) {
hmc5883::usage();
exit(0);
}
const char *verb = argv[myoptind];
/*
* Start/load the driver.
@@ -75,7 +75,6 @@
#include <uORB/uORB.h>
#include <float.h>
#include <getopt.h>
#include <lib/conversion/rotation.h>
/*
@@ -35,6 +35,7 @@
#include <px4_config.h>
#include <px4_defines.h>
#include <px4_getopt.h>
#define LSM303AGR_DEVICE_PATH_MAG "/dev/lsm303agr_mag"
@@ -135,11 +136,14 @@ usage()
int
lsm303agr_main(int argc, char *argv[])
{
int myoptind = 1;
int ch;
const char *myoptarg = nullptr;
enum Rotation rotation = ROTATION_NONE;
/* jump over start/off/etc and look at options first */
while ((ch = getopt(argc, argv, "XR:a:")) != EOF) {
while ((ch = px4_getopt(argc, argv, "XR:a:", &myoptind, &myoptarg)) != EOF) {
switch (ch) {
case 'R':
rotation = (enum Rotation)atoi(optarg);
@@ -151,7 +155,12 @@ lsm303agr_main(int argc, char *argv[])
}
}
const char *verb = argv[optind];
if (myoptind >= argc) {
lsm303agr::usage();
exit(0);
}
const char *verb = argv[myoptind];
/*
* Start/load the driver.