|
@@ -98,6 +98,20 @@ struct str_len_s {
|
|
*/
|
|
*/
|
|
#define STR_LEN(s) { #s, sizeof(#s)-1 }
|
|
#define STR_LEN(s) { #s, sizeof(#s)-1 }
|
|
|
|
|
|
|
|
+/* List of paths considered unsafe for cross-compilation.
|
|
|
|
+ *
|
|
|
|
+ * An unsafe path is one that points to a directory with libraries or
|
|
|
|
+ * headers for the build machine, which are not suitable for the target.
|
|
|
|
+ */
|
|
|
|
+static const struct str_len_s unsafe_paths[] = {
|
|
|
|
+ STR_LEN(/lib),
|
|
|
|
+ STR_LEN(/usr/include),
|
|
|
|
+ STR_LEN(/usr/lib),
|
|
|
|
+ STR_LEN(/usr/local/include),
|
|
|
|
+ STR_LEN(/usr/local/lib),
|
|
|
|
+ { NULL, 0 },
|
|
|
|
+};
|
|
|
|
+
|
|
/* Unsafe options are options that specify a potentialy unsafe path,
|
|
/* Unsafe options are options that specify a potentialy unsafe path,
|
|
* that will be checked by check_unsafe_path(), below.
|
|
* that will be checked by check_unsafe_path(), below.
|
|
*/
|
|
*/
|
|
@@ -126,13 +140,10 @@ static void check_unsafe_path(const char *arg,
|
|
int paranoid,
|
|
int paranoid,
|
|
int arg_has_path)
|
|
int arg_has_path)
|
|
{
|
|
{
|
|
- char **c;
|
|
|
|
- static char *unsafe_paths[] = {
|
|
|
|
- "/lib", "/usr/include", "/usr/lib", "/usr/local/include", "/usr/local/lib", NULL,
|
|
|
|
- };
|
|
|
|
|
|
+ const struct str_len_s *p;
|
|
|
|
|
|
- for (c = unsafe_paths; *c != NULL; c++) {
|
|
|
|
- if (strncmp(path, *c, strlen(*c)))
|
|
|
|
|
|
+ for (p=unsafe_paths; p->str; p++) {
|
|
|
|
+ if (strncmp(path, p->str, p->len))
|
|
continue;
|
|
continue;
|
|
fprintf(stderr,
|
|
fprintf(stderr,
|
|
"%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n",
|
|
"%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n",
|