NetUtilsWrapper: don't execute non-whitelisted commands.
Bug: 36463595
Test: marlin builds, boots
Test: wifi calling works
Change-Id: Ic26adf95544ec4465d1182bb72c87fe4c9b05378
diff --git a/netutils_wrappers/NetUtilsWrapper-1.0.cpp b/netutils_wrappers/NetUtilsWrapper-1.0.cpp
index 36b65fa..ba0bf98 100644
--- a/netutils_wrappers/NetUtilsWrapper-1.0.cpp
+++ b/netutils_wrappers/NetUtilsWrapper-1.0.cpp
@@ -81,6 +81,7 @@
};
bool checkExpectedCommand(int argc, char **argv) {
+ static bool loggedError = false;
std::vector<const char*> allArgs(argc);
for (int i = 0; i < argc; i++) {
allArgs[i] = argv[i];
@@ -92,7 +93,11 @@
return true;
}
}
- ALOGI("Unexpected command: %s", fullCmd.c_str());
+ if (!loggedError) {
+ ALOGI("Unexpected command: %s", fullCmd.c_str());
+ fprintf(stderr, LOG_TAG ": Unexpected command: %s", fullCmd.c_str());
+ loggedError = true;
+ }
return false;
}
@@ -118,12 +123,12 @@
exit(EXIT_FAILURE);
}
argv[0] = cmd;
- checkExpectedCommand(argc, argv);
- execv(cmd, argv);
+ if (checkExpectedCommand(argc, argv)) {
+ execv(cmd, argv);
+ }
}
}
- // must never reach here
- fprintf(stderr, "(%s:%d) is not a supported net util\n", progname, errno);
+ // Invalid command. Reject and fail.
exit(EXIT_FAILURE);
}