From 335c5bd1cdfa81cac2f2aebf10c089f47039c0a4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 25 Oct 2014 15:54:45 +0200 Subject: [PATCH] installer: Fix loads of compiler warnings --- src/installer/Makefile.am | 1 + src/installer/configure.ac | 10 ++++++++++ src/installer/hw.c | 15 ++++++++------- src/installer/hw.h | 4 +++- src/installer/main.c | 32 ++++++++++++++++---------------- 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/installer/Makefile.am b/src/installer/Makefile.am index f52a5940ac..62625fd0fe 100644 --- a/src/installer/Makefile.am +++ b/src/installer/Makefile.am @@ -44,6 +44,7 @@ installer_SOURCES = \ main.c installer_CFLAGS = \ + $(AM_CFLAGS) \ $(BLKID_CFLAGS) \ $(LIBSMOOTH_CFLAGS) \ $(PCI_CFLAGS) \ diff --git a/src/installer/configure.ac b/src/installer/configure.ac index e93e0afe41..85c5c5cb8c 100644 --- a/src/installer/configure.ac +++ b/src/installer/configure.ac @@ -39,6 +39,16 @@ AC_PROG_CC AC_PROG_CC_C99 AC_PROG_CC_C_O +CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ + "-Wformat=2 -Wformat-security -Wformat-nonliteral" \ + -Werror=overflow \ + -fno-strict-aliasing \ + -fstack-protector \ + -fstack-protector-strong \ + -fPIE \ + --param=ssp-buffer-size=4]) +AC_SUBST([OUR_CFLAGS], "$with_cflags") + AC_PATH_PROG([M4], [m4]) # Gettext diff --git a/src/installer/hw.c b/src/installer/hw.c index 651ffdf27c..e14a47016e 100644 --- a/src/installer/hw.c +++ b/src/installer/hw.c @@ -340,7 +340,7 @@ void hw_free_disks(struct hw_disk** disks) { free(disks); } -unsigned int hw_count_disks(struct hw_disk** disks) { +unsigned int hw_count_disks(const struct hw_disk** disks) { unsigned int ret = 0; while (*disks++) @@ -353,7 +353,7 @@ struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection) { struct hw_disk** ret = hw_create_disks(); struct hw_disk** selected_disks = ret; - unsigned int num_disks = hw_count_disks(disks); + unsigned int num_disks = hw_count_disks((const struct hw_disk**)disks); for (unsigned int i = 0; i < num_disks; i++) { if (!selection || selection[i]) { @@ -1029,12 +1029,13 @@ static char* hw_get_uuid(const char* dev) { return uuid; } +#define FSTAB_FMT "UUID=%s %-8s %-4s %-10s %d %d\n" + int hw_write_fstab(struct hw_destination* dest) { FILE* f = fopen(DESTINATION_MOUNT_PATH "/etc/fstab", "w"); if (!f) return -1; - const char* fmt = "UUID=%s %-8s %-4s %-10s %d %d\n"; char* uuid = NULL; // boot @@ -1042,7 +1043,7 @@ int hw_write_fstab(struct hw_destination* dest) { uuid = hw_get_uuid(dest->part_boot); if (uuid) { - fprintf(f, fmt, uuid, "/boot", "auto", "defaults", 1, 2); + fprintf(f, FSTAB_FMT, uuid, "/boot", "auto", "defaults", 1, 2); free(uuid); } } @@ -1052,7 +1053,7 @@ int hw_write_fstab(struct hw_destination* dest) { uuid = hw_get_uuid(dest->part_swap); if (uuid) { - fprintf(f, fmt, uuid, "swap", "swap", "defaults,pri=1", 0, 0); + fprintf(f, FSTAB_FMT, uuid, "swap", "swap", "defaults,pri=1", 0, 0); free(uuid); } } @@ -1060,7 +1061,7 @@ int hw_write_fstab(struct hw_destination* dest) { // root uuid = hw_get_uuid(dest->part_root); if (uuid) { - fprintf(f, fmt, uuid, "/", "auto", "defaults", 1, 1); + fprintf(f, FSTAB_FMT, uuid, "/", "auto", "defaults", 1, 1); free(uuid); } @@ -1069,7 +1070,7 @@ int hw_write_fstab(struct hw_destination* dest) { uuid = hw_get_uuid(dest->part_data); if (uuid) { - fprintf(f, fmt, uuid, "/var", "auto", "defaults", 1, 1); + fprintf(f, FSTAB_FMT, uuid, "/var", "auto", "defaults", 1, 1); free(uuid); } } diff --git a/src/installer/hw.h b/src/installer/hw.h index 41ff093ad2..83753fdc0d 100644 --- a/src/installer/hw.h +++ b/src/installer/hw.h @@ -107,7 +107,7 @@ char* hw_find_source_medium(struct hw* hw); struct hw_disk** hw_find_disks(struct hw* hw, const char* sourcedrive); void hw_free_disks(struct hw_disk** disks); -unsigned int hw_count_disks(struct hw_disk** disks); +unsigned int hw_count_disks(const struct hw_disk** disks); struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection); struct hw_disk** hw_select_first_disk(const struct hw_disk** disks); @@ -131,6 +131,8 @@ int hw_write_fstab(struct hw_destination* dest); char* hw_find_backup_file(const char* output, const char* search_path); int hw_restore_backup(const char* output, const char* backup_path, const char* destination); +int hw_start_networking(const char* output); + void hw_sync(); #endif /* HEADER_HW_H */ diff --git a/src/installer/main.c b/src/installer/main.c index 5a2e0c4067..1d8abb81ba 100644 --- a/src/installer/main.c +++ b/src/installer/main.c @@ -7,6 +7,7 @@ * Contains main entry point, and misc functions.6 * */ +#define _GNU_SOURCE #include #include @@ -162,7 +163,7 @@ static int newtLicenseBox(const char* title, const char* text, int width, int he return ret; } -int write_lang_configs(const char *lang) { +int write_lang_configs(char* lang) { struct keyvalue *kv = initkeyvalues(); /* default stuff for main/settings. */ @@ -206,7 +207,7 @@ static char* center_string(const char* str, int width) { } #define DEFAULT_LANG "English" -#define NUM_LANGS 8 +#define NUM_LANGS 10 static struct lang { const char* code; @@ -253,7 +254,7 @@ static void parse_command_line(struct config* c) { while (token) { strncpy(buffer, token, sizeof(buffer)); - char* val = &buffer; + char* val = buffer; char* key = strsep(&val, "="); // serial console @@ -270,7 +271,7 @@ static void parse_command_line(struct config* c) { // download url else if (strcmp(key, "installer.download-url") == 0) { - strncpy(&c->download_url, val, sizeof(c->download_url)); + strncpy(c->download_url, val, sizeof(c->download_url)); c->perform_download = 1; // Require networking for the download @@ -301,11 +302,10 @@ int main(int argc, char *argv[]) { char message[STRING_SIZE]; char title[STRING_SIZE]; int allok = 0; - FILE *handle, *copying; - char line[STRING_SIZE]; - - setlocale (LC_ALL, ""); - sethostname( SNAME , 10); + FILE *copying; + + setlocale(LC_ALL, ""); + sethostname(SNAME, 10); /* Log file/terminal stuff. */ FILE* flog = NULL; @@ -364,7 +364,7 @@ int main(int argc, char *argv[]) { assert(choice <= NUM_LANGS); fprintf(flog, "Selected language: %s (%s)\n", languages[choice].name, languages[choice].code); - snprintf(language, sizeof(language), languages[choice].code); + snprintf(language, sizeof(language), "%s", languages[choice].code); setenv("LANGUAGE", language, 1); setlocale(LC_ALL, language); @@ -487,7 +487,7 @@ int main(int argc, char *argv[]) { // Read the license file. if (!(copying = fopen(LICENSE_FILE, "r"))) { sprintf(discl_msg, "Could not open license file: %s\n", LICENSE_FILE); - fprintf(flog, discl_msg); + fprintf(flog, "%s", discl_msg); } else { fread(discl_msg, 1, 40000, copying); fclose(copying); @@ -510,7 +510,7 @@ int main(int argc, char *argv[]) { // Check how many disks have been found and what // we can do with them. - unsigned int num_disks = hw_count_disks(disks); + unsigned int num_disks = hw_count_disks((const struct hw_disk**)disks); while (1) { // no harddisks found @@ -522,7 +522,7 @@ int main(int argc, char *argv[]) { // or if we are running in unattended mode, we will select // the first disk and go with that one } else if ((num_disks == 1) || (config.unattended && num_disks >= 1)) { - selected_disks = hw_select_first_disk(disks); + selected_disks = hw_select_first_disk((const struct hw_disk**)disks); // more than one usable disk has been found and // the user needs to choose what to do with them @@ -531,7 +531,7 @@ int main(int argc, char *argv[]) { int disk_selection[num_disks]; for (unsigned int i = 0; i < num_disks; i++) { - disk_names[i] = &disks[i]->description; + disk_names[i] = disks[i]->description; disk_selection[i] = 0; } @@ -562,7 +562,7 @@ int main(int argc, char *argv[]) { if (config.unattended) break; - num_selected_disks = hw_count_disks(selected_disks); + num_selected_disks = hw_count_disks((const struct hw_disk**)selected_disks); if (num_selected_disks == 1) { snprintf(message, sizeof(message), @@ -645,7 +645,7 @@ int main(int argc, char *argv[]) { if (HW_FS_DEFAULT == filesystems[i].fstype) fs_choice = i; - fs_names[i] = filesystems[i].description; + fs_names[i] = &filesystems[i].description; } rc = newtWinMenu(_("Filesystem Selection"), _("Please choose your filesystem:"), -- 2.39.2