Git Product home page Git Product logo

enumy's Introduction

Coverity Scan Build Status Maintenance GitHub license Total alerts Help Wanted Language grade: C/C++

Enumy

Enumy is an ultra fast portable executable that you drop on target Linux machine during a pentest or CTF in the post exploitation phase. Running enumy will enumerate the box for common security vulnerabilities.

Installation

You can download the final binary from the release x86 or x64 tab. Statically linked to musl Transfer the final enumy binary to the target machine.

./enumy

Who Should Use Enumy

  • Pentester can run on a target machine raisable issues for their reports.
  • CTF players can use it identify things that they might have missed.
  • People who are curious to know how many isues enumy finds on their local machine?

Options

$ ./enumy64 -h
 ▄█▀─▄▄▄▄▄▄▄─▀█▄  _____                                  
 ▀█████████████▀ |   __|___ _ _ _____ _ _ 
     █▄███▄█     |   __|   | | |     | | |
      █████      |_____|_|_|___|_|_|_|_  |
      █▀█▀█                          |___|

 https://github.com/luke-goddard/enumy

 Enumy - Used to enumerate the target the target environment & look for
 common security vulnerabilities and hostspots
 ----------------------------------------------------------------------

 Output
  -o <loc>     OUTPUT results to location (default enumy.json)

 Walking Filesystem
  -i <loc>     IGNORE files in this directory (usefull for network shares)
  -w <loc>     Only WALK files in this directory (usefull for devlopment)

 Scan Options
  -f           run FULL scans (CPU intensive scan's enabled)
  -t <num>     THREADS (default 4)

 Printing Options
  -a           Print all security AUDIT issues to screen (probably won't help duing a CTF)
               Issues are ALWAYS logged in result files regardless of this flag being set.
  -d <1|2>     Print DEBUG mode (1 low, 2 high) to enable error being printed to screen.
  -g <H|M|L>   print to screen values GREATER than or equal to high, medium & low
  -p <H|M|L|I> do not PRINT to screen high, medium, low & info issues (see below for example)
  -m 1-100     MAXIMUM number of issues with same name to print to screen default (unlimited)

Compilation

To compile during devlopment, make and libcap libary is all that is required.

sudo apt-get install libcap-dev
make

To remove the glibc dependency and statically link all libaries/compile with musl do the following. Note to do this you will have to have docker installed to create the apline build environment.

./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

Scan Times

enumy benchmarks

Scans That've Been Implemented

Below is the ever growing list of scans that have been implemented.

Scan Type Quick Scan Full Scan Implemented Printed To Screen Save In Log
Kernel Exploit Surgestor ✔️ ✔️ ✔️ ✔️ ✔️
SUID/GUID Scan ✔️ ✔️ ✔️ ✔️ ✔️
File Capabilities Scan ✔️ ✔️ ✔️ ✔️
Intresting Files Scan ✔️ ✔️ ✔️ ✔️ ✔️
Coredump Scan ✔️ ✔️ ✔️ ✔️ ✔️
Breakout Binaries Scan ✔️ ✔️ ✔️ ✔️ ✔️
SSHD Configuration Scan ✔️ ✔️ ✔️ ✔️
Sysctl Scan ✔️ ✔️ ✔️ ✔️ ✔️
Living Off The Land Scan ✔️ ✔️ ✔️ ✔️ ✔️
Current User Scan ✔️ ✔️ ✔️ ✔️ ✔️
*.so Injection Scan ✔️ ✔️ ✔️
Permissions Scan ✔️ ✔️ ✔️
File System Scan ✔️ ✔️ ✔️
Docker Scan ✔️ ✔️ ✔️
Environment Scan ✔️ ✔️ ✔️
Privilaged Access Scan ✔️ ✔️ ✔️
Networking Scan ✔️ ✔️ ✔️
System Info Scan ✔️ ✔️ ✔️
Version Information Scan ✔️ ✔️ ✔️
Default Weak Credentials Scan ✔️ ✔️ ✔️
Weak Crypto Scan ✔️ ✔️

Note to print results marked as ❌, enable audit mode with the -a flag.

How To Contribute

  • If you can think of a scan idea that has not been implemented, raise it as an issue.
  • If you know how to program, make a pull request :)
  • All contributions are welcome

Scan types

Kernel Exploit Surgestor

This scan will check the kernel versions to see if it matches any kernel versions with known exploits.

SUID GUID Scan

The idea of this scan is enumerate the system looking for SUID/GUID binaries that are abnormal, or have weak permissions that can be exploited.

File Capabilities Scan

Recently the Linux kernel supports capablities, this is the prefered way to give a file a subset of root's powers to mitigate risk. Although this is a much safer way of doing things, if you're lucky enough to find abnormal capabilities set on a file then it's quite possible that you can exploit the executable to gain higher access. Enumy will check the capabilties set on all executable files on the system.

Interesting Files Scan

This is more of a generic scan that will try and categorize a file based off it's contents, file extension and file name. Enumy will look for files such as private keys, passwords and backup files.

Coredump Scan

Coredump files are a type of ELF file that contains a process's address space when the program terminates unexpectedly. Now imagine if this process's memory was readable and contained sensative information. Or even more exciting, this coredump could be for an internally developed tool that seg faulted, allowing you to develop a zero day.

Breakout Binary Scan

Some file should never have SUID bit set, it quite common for a lazy sys admin to give a file like docker, ionice, hexdump SUID make a bash script work or there life easier. This scan tries to find some known bad SUID binaries.

Sysctl Parameter Hardening

Sysctl is used to modify kernel parameters at runtime. It's also possible to query these kernel parameters and check to see if important secutiry measures like ASLR are enabled.

Living Off The Land scan

Living off the land is a technique used where attackers weponize what's allready on the system. They do this to remain stealthy amongst other reasons. This scan would enumerate the files that an attacker would be looking for.

Dynamic Shared Object Injection Scan

This scan will parse ELF files for their dependencies. If we have write access to any of these dependencies or write access to any DT_RPATH and DT_RUNPATH values then we can create our own malicious shared object into that executable potentiall compromizing the system.

SSH Misconfiguration Scan

SSH is one of one of the most common services that you will find in the real world. It's also quite easy to misconfigure it. This scan will check to see if it can be hardened in anyway.

Current User Scan

The current user scan just parses /etc/passwd. With this information we find root accounts, unprotected and missing home directories etc.

Permisionss Scan

This scan is going to find file that are globaly writable files, uneven permissions and unowned files. See here for inspiration of the scan.

File System Scan

This scan would be useful for people trying to harden their Linux machine. It will highlight issues such as unencrypted drives and insecure mounting configurations.

enumy's People

Contributors

johnthesecond avatar luke-goddard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enumy's Issues

Segfault when statically linked against musl

Bug only reproducible inside of release binary when compiled with musl in Alpine, with multiple threads enabled.

/**
 * This function will check the current file to see if it resides in a location 
 * that should be read only
 */
static void check_global_write(All_Results *ar, File_Info *fi)
{
    if (!has_global_write(fi))
        return;

    /* Check to see if the file is protected by any parent directories */
    char parent_buf[MAXSIZE] = {'\0'};
    char issue_buf[MAXSIZE + 50] = {'\0'};

    if (get_first_dir_that_protects_file(fi->location, parent_buf, ar))
    {
        /* The directory is protected */
        snprintf(issue_buf, (sizeof(issue_buf) - 1), "Found a protected world writable file in: %s", parent_buf);
        struct stat stats;
        if ((stat(parent_buf, &stats) != 0))
        {
            log_error_errno_loc(ar, "Failed to stat directory", parent_buf, errno);
            printf("%i -> %i -> %s -> %i -> %s\n", LOW, AUDIT, fi->location, ar == NULL, issue_buf);
            add_issue(LOW, AUDIT, fi->location, ar, issue_buf, "ENUMY failed to stat the parent directory");
            return;
        }
        struct passwd *data = getpwuid(stats.st_uid); <======== Segfault here 
        if (data == NULL)
        {
            log_error_errno_loc(ar, "Failed to stat directory", parent_buf, errno);
            add_issue(LOW, AUDIT, fi->location, ar, issue_buf, "ENUMY failed to got the owner of the directory");
            return;
        }
        add_issue(LOW, AUDIT, fi->location, ar, issue_buf, data->pw_name);
        return;
    }
debug extra-> src/all_scans.c:99:scan_file_for_issues(): Scanning file ->/home/luke/some_file
[!] - ERROR -> Failed to stat directory: No data available /home/luke/

This file does exist and previous stat calls worked on the same file.

$ gdb ouput/enumy64
@gdb-peda$ set follow-fork-mode parent 
@gdb-peda$ start -t 12 
@gdb-peda$ c
...Stopped reason: SIGSEGV
@gdb-peda$ backtrace 
#0  unmap_chunk (self=0x7ffffa5dc930) at src/malloc/malloc.c:515
#1  free (p=p@entry=0x7ffffa5dc940) at src/malloc/malloc.c:526
#2  0x00007ffff7fe0eb6 in realloc (p=0x7ffffa5dc940, n=<optimized out>, n@entry=0x32) at src/malloc/malloc.c:436
#3  0x00007ffff7fea1a6 in getdelim (s=s@entry=0x7ffff7ffe350 <line>, n=n@entry=0x7ffff7ffe318 <size>, delim=delim@entry=0xa, f=f@entry=0x7ffffa65b120) at src/stdio/getdelim.c:38
#4  0x00007ffff7fe276e in getline (s=s@entry=0x7ffff7ffe350 <line>, n=n@entry=0x7ffff7ffe318 <size>, f=f@entry=0x7ffffa65b120) at src/stdio/getline.c:5
#5  0x00007ffff7fe1961 in __getpwent_a (f=f@entry=0x7ffffa65b120, pw=pw@entry=0x7ffff7ffe320 <pw>, line=line@entry=0x7ffff7ffe350 <line>, size=size@entry=0x7ffff7ffe318 <size>, res=res@entry=0x7ffff7f33bb8) at src/passwd/getpwent_a.c:19
#6  0x00007ffff7fe9044 in __getpw_a (name=name@entry=0x0, uid=0x3e8, pw=pw@entry=0x7ffff7ffe320 <pw>, buf=buf@entry=0x7ffff7ffe350 <line>, size=size@entry=0x7ffff7ffe318 <size>, res=res@entry=0x7ffff7f33bb8) at src/passwd/getpw_a.c:36
#7  0x00007ffff7fe18f0 in getpwuid (uid=<optimized out>) at src/passwd/getpwent.c:28
#8  0x00007ffff7fdac56 in check_global_write (ar=0x7ffff8000860, fi=0x7ffffa6c6360) at src/scans/permissions_scan.c:80
#9  0x00007ffff7fdaa57 in permissions_scan (fi=0x7ffffa6c6360, ar=0x7ffff8000860, users=0x7ffff80ea500) at src/scans/permissions_scan.c:50
#10 0x00007ffff7fcf5b9 in scan_file_for_issues (thread_pool_args=0x7ffff8000940) at src/all_scans.c:106
#11 0x00007ffff7fd527b in thread_do (thread_p=0x7ffff8b25880) at src/thpool.c:362
#12 0x00007ffff7fe6270 in start (p=0x7ffff7f34ee8) at src/thread/pthread_create.c:192
#13 0x00007ffff7fe6f23 in __clone () at src/thread/x86_64/clone.s:22
@gdb-peda$ frame 8
@gdb-peda$ stats = {
  st_dev = 0x30,
  st_ino = 0x75c0,
  st_nlink = 0xc,
  st_mode = 0x41c0,
  st_uid = 0x3e8,
  st_gid = 0x3d9,
  __pad0 = 0x0,
  st_rdev = 0x0,
  st_size = 0x17c,
  st_blksize = 0x1000,
  st_blocks = 0x0,
  st_atim = {
    tv_sec = 0x5ed7a82e,
    tv_nsec = 0x3cbe13
  },
  st_mtim = {
    tv_sec = 0x5ed7a7b2,
    tv_nsec = 0x23cd2232
  },
  st_ctim = {
    tv_sec = 0x5ed7a7b2,
    tv_nsec = 0x23cd2232
  },
  __unused = {0x0, 0x0, 0x0}
}
data = 0x0
parent_buf = "/run/user/1000/", '\000' <repeats 2033 times>
issue_buf = "Found a protected world writable file in: /run/user/1000/", '\000' <repeats 2041 times>
@gdb-peda$ x/10i $rip-10
   0x7ffff7fe0eac <realloc+368>:        mov    edi,esp
   0x7ffff7fe0eae <realloc+370>:        mov    r12,r14
   0x7ffff7fe0eb1 <realloc+373>:        call   0x7ffff7fe0d05 <free>
=> 0x7ffff7fe0eb6 <realloc+378>:        add    rsp,0x18
   0x7ffff7fe0eba <realloc+382>:        mov    rax,r12

I've commented the code causing the segfault

Testing

Need to give some thought into how to test enemy

bug lstat uses wrong path

enumy/src/file_system.c

Lines 60 to 73 in 86a11f9

unsigned char get_d_type(struct dirent* entry, const char* location) {
struct stat statbuf;
unsigned char rv = DT_UNKNOWN;
if (DT_UNKNOWN == entry->d_type){
char filepath[MAXSIZE];
strncpy(filepath, location, MAXSIZE - 1);
strncat(filepath, entry->d_name, MAXSIZE - 1);
// The call to lstat here might not be thread safe, if the call is being made on the same file at the same time.
// I think there ius no way that this happens at the moment, but am not sure at all.
// Could globally lock this or do some sort of filesystem hash to make this more fine-grained etc.
if(-1 != lstat(entry->d_name, &statbuf))

lstat should use filepath not the file name

refractor / tlc

Files in need of refractoring

sshd_conf_scan.c
reporter.c
sys_scan.c
file_system.c

Error reporting

Need a way to report and handle errors, the current approach is not very good

Elf file parser 64/32 Bit compatibility

Current enumy64 can only handle 64 bit elfs and will skip 32 bit elfs. This is currently a limitation but would be good in the future if both could be supported.

[Feature Request] User Friendly Reports

enumy finds lots of useful info but, it can some times be a bit hard to analyze when the reports big and there's lots their.

Perhaps, have an option to create an html report with hyperlinks and cullers as well as minimizing or expanding sections, this may make it easier to analyze.
Thanks

ncurses

Ncurses is currently disabled while scans are being implemented

Scrap issue ID's for hashes

Assigning every issue an ID is not scalable. A better approach could be to hash the issue name to get an issue ID.

XFS filesystem d_type=0

I was using enumy on an OSCP box and and walking the file system would fail. All files would come up as unknown file type error. I added some extra debug statements, recompiled code an shipped off throw netcat and found that d_type returns 0?

The main filesystem is XFS

df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        18G  2.3G   16G  13% /
devtmpfs                devtmpfs  487M     0  487M   0% /dev
tmpfs                   tmpfs     497M     0  497M   0% /dev/shm
tmpfs                   tmpfs     497M     0  497M   0% /sys/fs/cgroup
tmpfs                   tmpfs     497M   13M  484M   3% /run
/dev/sda1               xfs       497M  164M  333M  33% /boot
tmpfs                   tmpfs     100M     0  100M   0% /run/user/1004
tmpfs                   tmpfs     100M     0  100M   0% /run/user/0

We can run xfs_info and see that f_type is set to 0

xfs_info / 
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=1144832 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=4579328, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

This prevents enumy from figuring out if a file is a file or a directory etc.

How to tackle enumerating mount points

One of the scans is going to iterate through all the mount points and check if they're encrypted.

I did a bit of research and found the following file systems

File system type supports encryption encrypted by default
VFAT ? ?
exFAT ? ?
mkexfatfs(8) ? ?
F2FS ? ?
ext3 ? ?
ext4 ? ?
HFS ? ?
HFS+ ? ?
JFS ? ?
NILFS2 ? ?
NTFS ? ?
ReiserFS ? ?
UDF ? ?

I also know of Luks, that to my knowledge works on all filesystem types as a separate layer on top.

Without using blkid how would I get all mount points and test if they're encrypted?

I encrypted a USB with luks/etx4 and mounted it but /proc/mounts did not show indication of encryption.

 /dev/mapper/reddrive /mnt ext4 rw,relatime 0 0

How to hand RPATH edge case

One of the scans will parse ELF files and find the DT_RUNPATH and DT_RPATH. Then if it finds a path we check to see if we have to write access at that location so that we can inject a malicious shared object. From testing I found the following edge case.

$ readelf -d /opt/minecraft-launcher/minecraft-launcher | grep RPATH
  0x000000000000000f (RPATH)              Library rpath: [.:$ORIGIN/]

This gets split into to two values.

  1. "."
  2. "$ORIGIN/"

I understand that $ORIGIN gets replaced with the binaries' current working directory. But what on earth does "." do? I've looked through loads of documentation and cannot find anything. I also looked at ld.so source code but I did not really understand it.

make: *** [obj/exploit_suggester.o] Error 1

Got error on Ubuntu 18.04

src/scans/exploit_suggester.c:313:68: error: initializer element is not constant
 static struct PossibleExploit WootExploit = {Woot, "Woot", "", "", WootSize};
                                                                    ^~~~~~~~
src/scans/exploit_suggester.c:313:68: note: (near initialization for ‘WootExploit.vul_count’)
src/scans/exploit_suggester.c:313:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit WootExploit = {Woot, "Woot", "", "", WootSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:314:65: error: initializer element is not constant
 static struct PossibleExploit BrkExploit = {Brk, "Brk", "", "", BrkSize};
                                                                 ^~~~~~~
src/scans/exploit_suggester.c:314:65: note: (near initialization for ‘BrkExploit.vul_count’)
src/scans/exploit_suggester.c:314:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit BrkExploit = {Brk, "Brk", "", "", BrkSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:315:65: error: initializer element is not constant
 static struct PossibleExploit AveExploit = {Ave, "Ave", "", "", AveSize};
                                                                 ^~~~~~~
src/scans/exploit_suggester.c:315:65: note: (near initialization for ‘AveExploit.vul_count’)
src/scans/exploit_suggester.c:315:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit AveExploit = {Ave, "Ave", "", "", AveSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:316:112: error: initializer element is not constant
 static struct PossibleExploit ElflblExploit = {Elflbl, "Elflbl", "http://www.exploit-db.com/exploits/744", "", ElflblSize};
                                                                                                                ^~~~~~~~~~
src/scans/exploit_suggester.c:316:112: note: (near initialization for ‘ElflblExploit.vul_count’)
src/scans/exploit_suggester.c:316:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ElflblExploit = {Elflbl, "Elflbl", "http://www.exploit-db.com/exploits/744", "", ElflblSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:317:77: error: initializer element is not constant
 static struct PossibleExploit ElfDumpExploit = {ElfDump, "ElfDump", "", "", ElfDumpSize};
                                                                             ^~~~~~~~~~~
src/scans/exploit_suggester.c:317:77: note: (near initialization for ‘ElfDumpExploit.vul_count’)
src/scans/exploit_suggester.c:317:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ElfDumpExploit = {ElfDump, "ElfDump", "", "", ElfDumpSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:318:71: error: initializer element is not constant
 static struct PossibleExploit ElfcdExploit = {Elfcd, "Elfcd", "", "", ElfcdSize};
                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:318:71: note: (near initialization for ‘ElfcdExploit.vul_count’)
src/scans/exploit_suggester.c:318:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ElfcdExploit = {Elfcd, "Elfcd", "", "", ElfcdSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:319:89: error: initializer element is not constant
 static struct PossibleExploit ExpandStackExploit = {ExpandStack, "ExpandStack", "", "", ExpandStackSize};
                                                                                         ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:319:89: note: (near initialization for ‘ExpandStackExploit.vul_count’)
src/scans/exploit_suggester.c:319:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ExpandStackExploit = {ExpandStack, "ExpandStack", "", "", ExpandStackSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:320:131: error: initializer element is not constant
 static struct PossibleExploit H00lyShitExploit = {H00lyShit, "H00lyShit", "http://www.exploit-db.com/exploits/2013", "2006-3626", H00lyShitSize};
                                                                                                                                   ^~~~~~~~~~~~~
src/scans/exploit_suggester.c:320:131: note: (near initialization for ‘H00lyShitExploit.vul_count’)
src/scans/exploit_suggester.c:320:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit H00lyShitExploit = {H00lyShit, "H00lyShit", "http://www.exploit-db.com/exploits/2013", "2006-3626", H00lyShitSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:321:71: error: initializer element is not constant
 static struct PossibleExploit KdumpExploit = {Kdump, "Kdump", "", "", KdumpSize};
                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:321:71: note: (near initialization for ‘KdumpExploit.vul_count’)
src/scans/exploit_suggester.c:321:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit KdumpExploit = {Kdump, "Kdump", "", "", KdumpSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:322:74: error: initializer element is not constant
 static struct PossibleExploit Km2PwnExploit = {Km2Pwn, "Km2Pwn", "", "", Km2PwnSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:322:74: note: (near initialization for ‘Km2PwnExploit.vul_count’)
src/scans/exploit_suggester.c:322:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Km2PwnExploit = {Km2Pwn, "Km2Pwn", "", "", Km2PwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:323:68: error: initializer element is not constant
 static struct PossibleExploit KradExploit = {Krad, "Krad", "", "", KradSize};
                                                                    ^~~~~~~~
src/scans/exploit_suggester.c:323:68: note: (near initialization for ‘KradExploit.vul_count’)
src/scans/exploit_suggester.c:323:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit KradExploit = {Krad, "Krad", "", "", KradSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:324:106: error: initializer element is not constant
 static struct PossibleExploit Krad3Exploit = {Krad3, "Krad3", "http://exploit-db.com/exploits/1397", "", Krad3Size};
                                                                                                          ^~~~~~~~~
src/scans/exploit_suggester.c:324:106: note: (near initialization for ‘Krad3Exploit.vul_count’)
src/scans/exploit_suggester.c:324:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Krad3Exploit = {Krad3, "Krad3", "http://exploit-db.com/exploits/1397", "", Krad3Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:325:77: error: initializer element is not constant
 static struct PossibleExploit Local26Exploit = {Local26, "Local26", "", "", Local26Size};
                                                                             ^~~~~~~~~~~
src/scans/exploit_suggester.c:325:77: note: (near initialization for ‘Local26Exploit.vul_count’)
src/scans/exploit_suggester.c:325:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Local26Exploit = {Local26, "Local26", "", "", Local26Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:326:68: error: initializer element is not constant
 static struct PossibleExploit LokoExploit = {Loko, "Loko", "", "", LokoSize};
                                                                    ^~~~~~~~
src/scans/exploit_suggester.c:326:68: note: (near initialization for ‘LokoExploit.vul_count’)
src/scans/exploit_suggester.c:326:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit LokoExploit = {Loko, "Loko", "", "", LokoSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:327:124: error: initializer element is not constant
 static struct PossibleExploit Mremap_pteExploit = {Mremap_pte, "Mremap_pte", "http://www.exploit-db.com/exploits/160", "", Mremap_pteSize};
                                                                                                                            ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:327:124: note: (near initialization for ‘Mremap_pteExploit.vul_count’)
src/scans/exploit_suggester.c:327:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Mremap_pteExploit = {Mremap_pte, "Mremap_pte", "http://www.exploit-db.com/exploits/160", "", Mremap_pteSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:328:80: error: initializer element is not constant
 static struct PossibleExploit NewLocalExploit = {NewLocal, "NewLocal", "", "", NewLocalSize};
                                                                                ^~~~~~~~~~~~
src/scans/exploit_suggester.c:328:80: note: (near initialization for ‘NewLocalExploit.vul_count’)
src/scans/exploit_suggester.c:328:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit NewLocalExploit = {NewLocal, "NewLocal", "", "", NewLocalSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:329:74: error: initializer element is not constant
 static struct PossibleExploit OngBakExploit = {OngBak, "OngBak", "", "", OngBakSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:329:74: note: (near initialization for ‘OngBakExploit.vul_count’)
src/scans/exploit_suggester.c:329:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit OngBakExploit = {OngBak, "OngBak", "", "", OngBakSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:330:74: error: initializer element is not constant
 static struct PossibleExploit PtraceExploit = {Ptrace, "Ptrace", "", "", PtraceSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:330:74: note: (near initialization for ‘PtraceExploit.vul_count’)
src/scans/exploit_suggester.c:330:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PtraceExploit = {Ptrace, "Ptrace", "", "", PtraceSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:331:95: error: initializer element is not constant
 static struct PossibleExploit PtraceKmodExploit = {PtraceKmod, "PtraceKmod", "", "2007-4573", PtraceKmodSize};
                                                                                               ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:331:95: note: (near initialization for ‘PtraceKmodExploit.vul_count’)
src/scans/exploit_suggester.c:331:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PtraceKmodExploit = {PtraceKmod, "PtraceKmod", "", "2007-4573", PtraceKmodSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:332:138: error: initializer element is not constant
 static struct PossibleExploit PtraceKmod2Exploit = {PtraceKmod2, "PtraceKmod2", "http://www.exploit-db.com/exploits/15023", "2010-3301", PtraceKmod2Size};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:332:138: note: (near initialization for ‘PtraceKmod2Exploit.vul_count’)
src/scans/exploit_suggester.c:332:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PtraceKmod2Exploit = {PtraceKmod2, "PtraceKmod2", "http://www.exploit-db.com/exploits/15023", "2010-3301", PtraceKmod2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:333:80: error: initializer element is not constant
 static struct PossibleExploit Ptrace24Exploit = {Ptrace24, "Ptrace24", "", "", Ptrace24Size};
                                                                                ^~~~~~~~~~~~
src/scans/exploit_suggester.c:333:80: note: (near initialization for ‘Ptrace24Exploit.vul_count’)
src/scans/exploit_suggester.c:333:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Ptrace24Exploit = {Ptrace24, "Ptrace24", "", "", Ptrace24Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:334:71: error: initializer element is not constant
 static struct PossibleExploit PwnedExploit = {Pwned, "Pwned", "", "", PwnedSize};
                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:334:71: note: (near initialization for ‘PwnedExploit.vul_count’)
src/scans/exploit_suggester.c:334:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PwnedExploit = {Pwned, "Pwned", "", "", PwnedSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:335:74: error: initializer element is not constant
 static struct PossibleExploit Py2PwnExploit = {Py2Pwn, "Py2Pwn", "", "", Py2PwnSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:335:74: note: (near initialization for ‘Py2PwnExploit.vul_count’)
src/scans/exploit_suggester.c:335:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Py2PwnExploit = {Py2Pwn, "Py2Pwn", "", "", Py2PwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:336:137: error: initializer element is not constant
 static struct PossibleExploit RaptorPrctlExploit = {RaptorPrctl, "RaptorPrctl", "http://www.exploit-db.com/exploits/2031", "2006-2451", RaptorPrctlSize};
                                                                                                                                         ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:336:137: note: (near initialization for ‘RaptorPrctlExploit.vul_count’)
src/scans/exploit_suggester.c:336:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit RaptorPrctlExploit = {RaptorPrctl, "RaptorPrctl", "http://www.exploit-db.com/exploits/2031", "2006-2451", RaptorPrctlSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:337:110: error: initializer element is not constant
 static struct PossibleExploit PrctlExploit = {Prctl, "Prctl", "http://www.exploit-db.com/exploits/2004", "", PrctlSize};
                                                                                                              ^~~~~~~~~
src/scans/exploit_suggester.c:337:110: note: (near initialization for ‘PrctlExploit.vul_count’)
src/scans/exploit_suggester.c:337:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PrctlExploit = {Prctl, "Prctl", "http://www.exploit-db.com/exploits/2004", "", PrctlSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:338:113: error: initializer element is not constant
 static struct PossibleExploit Prctl2Exploit = {Prctl2, "Prctl2", "http://www.exploit-db.com/exploits/2005", "", Prctl2Size};
                                                                                                                 ^~~~~~~~~~
src/scans/exploit_suggester.c:338:113: note: (near initialization for ‘Prctl2Exploit.vul_count’)
src/scans/exploit_suggester.c:338:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Prctl2Exploit = {Prctl2, "Prctl2", "http://www.exploit-db.com/exploits/2005", "", Prctl2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:339:113: error: initializer element is not constant
 static struct PossibleExploit Prctl3Exploit = {Prctl3, "Prctl3", "http://www.exploit-db.com/exploits/2005", "", Prctl3Size};
                                                                                                                 ^~~~~~~~~~
src/scans/exploit_suggester.c:339:113: note: (near initialization for ‘Prctl3Exploit.vul_count’)
src/scans/exploit_suggester.c:339:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Prctl3Exploit = {Prctl3, "Prctl3", "http://www.exploit-db.com/exploits/2005", "", Prctl3Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:340:113: error: initializer element is not constant
 static struct PossibleExploit Prctl4Exploit = {Prctl4, "Prctl4", "http://www.exploit-db.com/exploits/2011", "", Prctl4Size};
                                                                                                                 ^~~~~~~~~~
src/scans/exploit_suggester.c:340:113: note: (near initialization for ‘Prctl4Exploit.vul_count’)
src/scans/exploit_suggester.c:340:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Prctl4Exploit = {Prctl4, "Prctl4", "http://www.exploit-db.com/exploits/2011", "", Prctl4Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:341:71: error: initializer element is not constant
 static struct PossibleExploit RemapExploit = {Remap, "Remap", "", "", RemapSize};
                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:341:71: note: (near initialization for ‘RemapExploit.vul_count’)
src/scans/exploit_suggester.c:341:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit RemapExploit = {Remap, "Remap", "", "", RemapSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:342:74: error: initializer element is not constant
 static struct PossibleExploit RipPwnExploit = {RipPwn, "RipPwn", "", "", RipPwnSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:342:74: note: (near initialization for ‘RipPwnExploit.vul_count’)
src/scans/exploit_suggester.c:342:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit RipPwnExploit = {RipPwn, "RipPwn", "", "", RipPwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:343:86: error: initializer element is not constant
 static struct PossibleExploit StackGrow2Exploit = {StackGrow2, "StackGrow2", "", "", StackGrow2Size};
                                                                                      ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:343:86: note: (near initialization for ‘StackGrow2Exploit.vul_count’)
src/scans/exploit_suggester.c:343:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit StackGrow2Exploit = {StackGrow2, "StackGrow2", "", "", StackGrow2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:344:80: error: initializer element is not constant
 static struct PossibleExploit UseLib24Exploit = {UseLib24, "UseLib24", "", "", UseLib24Size};
                                                                                ^~~~~~~~~~~~
src/scans/exploit_suggester.c:344:80: note: (near initialization for ‘UseLib24Exploit.vul_count’)
src/scans/exploit_suggester.c:344:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit UseLib24Exploit = {UseLib24, "UseLib24", "", "", UseLib24Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:345:74: error: initializer element is not constant
 static struct PossibleExploit NewsmpExploit = {Newsmp, "Newsmp", "", "", NewsmpSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:345:74: note: (near initialization for ‘NewsmpExploit.vul_count’)
src/scans/exploit_suggester.c:345:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit NewsmpExploit = {Newsmp, "Newsmp", "", "", NewsmpSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:346:83: error: initializer element is not constant
 static struct PossibleExploit SnptracerExploit = {Snptracer, "Snptracer", "", "", SnptracerSize};
                                                                                   ^~~~~~~~~~~~~
src/scans/exploit_suggester.c:346:83: note: (near initialization for ‘SnptracerExploit.vul_count’)
src/scans/exploit_suggester.c:346:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit SnptracerExploit = {Snptracer, "Snptracer", "", "", SnptracerSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:347:74: error: initializer element is not constant
 static struct PossibleExploit LoginxExploit = {Loginx, "Loginx", "", "", LoginxSize};
                                                                          ^~~~~~~~~~
src/scans/exploit_suggester.c:347:74: note: (near initialization for ‘LoginxExploit.vul_count’)
src/scans/exploit_suggester.c:347:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit LoginxExploit = {Loginx, "Loginx", "", "", LoginxSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:348:71: error: initializer element is not constant
 static struct PossibleExploit ExpShExploit = {ExpSh, "ExpSh", "", "", ExpShSize};
                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:348:71: note: (near initialization for ‘ExpShExploit.vul_count’)
src/scans/exploit_suggester.c:348:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ExpShExploit = {ExpSh, "ExpSh", "", "", ExpShSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:349:131: error: initializer element is not constant
 static struct PossibleExploit Vmsplice1Exploit = {Vmsplice1, "Vmsplice1", "http://www.exploit-db.com/exploits/5092", "2008-0600", Vmsplice1Size};
                                                                                                                                   ^~~~~~~~~~~~~
src/scans/exploit_suggester.c:349:131: note: (near initialization for ‘Vmsplice1Exploit.vul_count’)
src/scans/exploit_suggester.c:349:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Vmsplice1Exploit = {Vmsplice1, "Vmsplice1", "http://www.exploit-db.com/exploits/5092", "2008-0600", Vmsplice1Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:350:131: error: initializer element is not constant
 static struct PossibleExploit Vmsplice2Exploit = {Vmsplice2, "Vmsplice2", "http://www.exploit-db.com/exploits/5093", "2008-0600", Vmsplice2Size};
                                                                                                                                   ^~~~~~~~~~~~~
src/scans/exploit_suggester.c:350:131: note: (near initialization for ‘Vmsplice2Exploit.vul_count’)
src/scans/exploit_suggester.c:350:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Vmsplice2Exploit = {Vmsplice2, "Vmsplice2", "http://www.exploit-db.com/exploits/5093", "2008-0600", Vmsplice2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:351:80: error: initializer element is not constant
 static struct PossibleExploit VconsoleExploit = {Vconsole, "Vconsole", "", "", VconsoleSize};
                                                                                ^~~~~~~~~~~~
src/scans/exploit_suggester.c:351:80: note: (near initialization for ‘VconsoleExploit.vul_count’)
src/scans/exploit_suggester.c:351:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit VconsoleExploit = {Vconsole, "Vconsole", "", "", VconsoleSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:352:68: error: initializer element is not constant
 static struct PossibleExploit SctpExploit = {Sctp, "Sctp", "", "", SctpSize};
                                                                    ^~~~~~~~
src/scans/exploit_suggester.c:352:68: note: (near initialization for ‘SctpExploit.vul_count’)
src/scans/exploit_suggester.c:352:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit SctpExploit = {Sctp, "Sctp", "", "", SctpSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:353:119: error: initializer element is not constant
 static struct PossibleExploit FtrexExploit = {Ftrex, "Ftrex", "http://www.exploit-db.com/exploits/6851", "2008-4210", FtrexSize};
                                                                                                                       ^~~~~~~~~
src/scans/exploit_suggester.c:353:119: note: (near initialization for ‘FtrexExploit.vul_count’)
src/scans/exploit_suggester.c:353:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit FtrexExploit = {Ftrex, "Ftrex", "http://www.exploit-db.com/exploits/6851", "2008-4210", FtrexSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:354:125: error: initializer element is not constant
 static struct PossibleExploit ExitNotifyExploit = {ExitNotify, "ExitNotify", "http://www.exploit-db.com/exploits/8369", "", ExitNotifySize};
                                                                                                                             ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:354:125: note: (near initialization for ‘ExitNotifyExploit.vul_count’)
src/scans/exploit_suggester.c:354:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ExitNotifyExploit = {ExitNotify, "ExitNotify", "http://www.exploit-db.com/exploits/8369", "", ExitNotifySize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:355:116: error: initializer element is not constant
 static struct PossibleExploit UdevExploit = {Udev, "Udev", "http://www.exploit-db.com/exploits/8478", "2009-1185", UdevSize};
                                                                                                                    ^~~~~~~~
src/scans/exploit_suggester.c:355:116: note: (near initialization for ‘UdevExploit.vul_count’)
src/scans/exploit_suggester.c:355:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit UdevExploit = {Udev, "Udev", "http://www.exploit-db.com/exploits/8478", "2009-1185", UdevSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:356:143: error: initializer element is not constant
 static struct PossibleExploit SockSendPage2Exploit = {SockSendPage2, "SockSendPage2", "http://www.exploit-db.com/exploits/9436", "2009-2692", SockSendPage2Size};
                                                                                                                                               ^~~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:356:143: note: (near initialization for ‘SockSendPage2Exploit.vul_count’)
src/scans/exploit_suggester.c:356:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit SockSendPage2Exploit = {SockSendPage2, "SockSendPage2", "http://www.exploit-db.com/exploits/9436", "2009-2692", SockSendPage2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:357:140: error: initializer element is not constant
 static struct PossibleExploit SockSendPageExploit = {SockSendPage, "SockSendPage", "http://www.exploit-db.com/exploits/9435", "2009-2692", SockSendPageSize};
                                                                                                                                            ^~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:357:140: note: (near initialization for ‘SockSendPageExploit.vul_count’)
src/scans/exploit_suggester.c:357:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit SockSendPageExploit = {SockSendPage, "SockSendPage", "http://www.exploit-db.com/exploits/9435", "2009-2692", SockSendPageSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:358:177: error: initializer element is not constant
 static struct PossibleExploit UdpSendMsg32BitExploit = {UdpSendMsg32Bit, "UdpSendMsg32Bit", "http://downloads.securityfocus.com/vulnerabilities/exploits/36108.c", "2009-2698", UdpSendMsg32BitSize};
                                                                                                                                                                                 ^~~~~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:358:177: note: (near initialization for ‘UdpSendMsg32BitExploit.vul_count’)
src/scans/exploit_suggester.c:358:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit UdpSendMsg32BitExploit = {UdpSendMsg32Bit, "UdpSendMsg32Bit", "http://downloads.securityfocus.com/vulnerabilities/exploits/36108.c", "2009-2698", UdpSendMsg32BitSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:359:163: error: initializer element is not constant
 static struct PossibleExploit PipeC32BitExploit = {PipeC32Bit, "PipeC32Bit", "http://www.securityfocus.com/data/vulnerabilities/exploits/36901-1.c", "2009-3547", PipeC32BitSize};
                                                                                                                                                                   ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:359:163: note: (near initialization for ‘PipeC32BitExploit.vul_count’)
src/scans/exploit_suggester.c:359:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PipeC32BitExploit = {PipeC32Bit, "PipeC32Bit", "http://www.securityfocus.com/data/vulnerabilities/exploits/36901-1.c", "2009-3547", PipeC32BitSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:360:95: error: initializer element is not constant
 static struct PossibleExploit DoPageMoveExploit = {DoPageMove, "DoPageMove", "", "2010-0415", DoPageMoveSize};
                                                                                               ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:360:95: note: (near initialization for ‘DoPageMoveExploit.vul_count’)
src/scans/exploit_suggester.c:360:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit DoPageMoveExploit = {DoPageMove, "DoPageMove", "", "2010-0415", DoPageMoveSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:361:129: error: initializer element is not constant
 static struct PossibleExploit ReiserfsExploit = {Reiserfs, "Reiserfs", "http://www.exploit-db.com/exploits/12130", "2010-1146", ReiserfsSize};
                                                                                                                                 ^~~~~~~~~~~~
src/scans/exploit_suggester.c:361:129: note: (near initialization for ‘ReiserfsExploit.vul_count’)
src/scans/exploit_suggester.c:361:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ReiserfsExploit = {Reiserfs, "Reiserfs", "http://www.exploit-db.com/exploits/12130", "2010-1146", ReiserfsSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:362:123: error: initializer element is not constant
 static struct PossibleExploit CanBcmExploit = {CanBcm, "CanBcm", "http://www.exploit-db.com/exploits/14814", "2010-2959", CanBcmSize};
                                                                                                                           ^~~~~~~~~~
src/scans/exploit_suggester.c:362:123: note: (near initialization for ‘CanBcmExploit.vul_count’)
src/scans/exploit_suggester.c:362:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit CanBcmExploit = {CanBcm, "CanBcm", "http://www.exploit-db.com/exploits/14814", "2010-2959", CanBcmSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:363:123: error: initializer element is not constant
 static struct PossibleExploit RdsPwnExploit = {RdsPwn, "RdsPwn", "http://www.exploit-db.com/exploits/15285", "2010-3904", RdsPwnSize};
                                                                                                                           ^~~~~~~~~~
src/scans/exploit_suggester.c:363:123: note: (near initialization for ‘RdsPwnExploit.vul_count’)
src/scans/exploit_suggester.c:363:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit RdsPwnExploit = {RdsPwn, "RdsPwn", "http://www.exploit-db.com/exploits/15285", "2010-3904", RdsPwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:364:138: error: initializer element is not constant
 static struct PossibleExploit HalfNelson1Exploit = {HalfNelson1, "HalfNelson1", "http://www.exploit-db.com/exploits/17787", "2010-3848", HalfNelson1Size};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:364:138: note: (near initialization for ‘HalfNelson1Exploit.vul_count’)
src/scans/exploit_suggester.c:364:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit HalfNelson1Exploit = {HalfNelson1, "HalfNelson1", "http://www.exploit-db.com/exploits/17787", "2010-3848", HalfNelson1Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:365:138: error: initializer element is not constant
 static struct PossibleExploit HalfNelson2Exploit = {HalfNelson2, "HalfNelson2", "http://www.exploit-db.com/exploits/17787", "2010-3850", HalfNelson2Size};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:365:138: note: (near initialization for ‘HalfNelson2Exploit.vul_count’)
src/scans/exploit_suggester.c:365:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit HalfNelson2Exploit = {HalfNelson2, "HalfNelson2", "http://www.exploit-db.com/exploits/17787", "2010-3850", HalfNelson2Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:366:138: error: initializer element is not constant
 static struct PossibleExploit HalfNelson3Exploit = {HalfNelson3, "HalfNelson3", "http://www.exploit-db.com/exploits/17787", "2010-4073", HalfNelson3Size};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:366:138: note: (near initialization for ‘HalfNelson3Exploit.vul_count’)
src/scans/exploit_suggester.c:366:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit HalfNelson3Exploit = {HalfNelson3, "HalfNelson3", "http://www.exploit-db.com/exploits/17787", "2010-4073", HalfNelson3Size};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:367:126: error: initializer element is not constant
 static struct PossibleExploit CapsToRootExploit = {CapsToRoot, "CapsToRoot", "http://www.exploit-db.com/exploits/15916", "", CapsToRootSize};
                                                                                                                              ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:367:126: note: (near initialization for ‘CapsToRootExploit.vul_count’)
src/scans/exploit_suggester.c:367:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit CapsToRootExploit = {CapsToRoot, "CapsToRoot", "http://www.exploit-db.com/exploits/15916", "", CapsToRootSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:368:163: error: initializer element is not constant
 static struct PossibleExploit AmericanSignLanguageExploit = {AmericanSignLanguage, "AmericanSignLanguage", "http://www.securityfocus.com/bid/45408", "2010-4347", AmericanSignLanguageSize};
                                                                                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:368:163: note: (near initialization for ‘AmericanSignLanguageExploit.vul_count’)
src/scans/exploit_suggester.c:368:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit AmericanSignLanguageExploit = {AmericanSignLanguage, "AmericanSignLanguage", "http://www.securityfocus.com/bid/45408", "2010-4347", AmericanSignLanguageSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:369:126: error: initializer element is not constant
 static struct PossibleExploit PktcdvdExploit = {Pktcdvd, "Pktcdvd", "http://www.exploit-db.com/exploits/15150", "2010-3437", PktcdvdSize};
                                                                                                                              ^~~~~~~~~~~
src/scans/exploit_suggester.c:369:126: note: (near initialization for ‘PktcdvdExploit.vul_count’)
src/scans/exploit_suggester.c:369:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PktcdvdExploit = {Pktcdvd, "Pktcdvd", "http://www.exploit-db.com/exploits/15150", "2010-3437", PktcdvdSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:370:138: error: initializer element is not constant
 static struct PossibleExploit Video4LinuxExploit = {Video4Linux, "Video4Linux", "http://www.exploit-db.com/exploits/15024", "2010-3081", Video4LinuxSize};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:370:138: note: (near initialization for ‘Video4LinuxExploit.vul_count’)
src/scans/exploit_suggester.c:370:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit Video4LinuxExploit = {Video4Linux, "Video4Linux", "http://www.exploit-db.com/exploits/15024", "2010-3081", Video4LinuxSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:371:135: error: initializer element is not constant
 static struct PossibleExploit MemodipperExploit = {Memodipper, "Memodipper", "http://www.exploit-db.com/exploits/18411", "2012-0056", MemodipperSize};
                                                                                                                                       ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:371:135: note: (near initialization for ‘MemodipperExploit.vul_count’)
src/scans/exploit_suggester.c:371:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit MemodipperExploit = {Memodipper, "Memodipper", "http://www.exploit-db.com/exploits/18411", "2012-0056", MemodipperSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:372:123: error: initializer element is not constant
 static struct PossibleExploit SemTexExploit = {SemTex, "SemTex", "http://www.exploit-db.com/exploits/25444", "2013-2094", SemTexSize};
                                                                                                                           ^~~~~~~~~~
src/scans/exploit_suggester.c:372:123: note: (near initialization for ‘SemTexExploit.vul_count’)
src/scans/exploit_suggester.c:372:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit SemTexExploit = {SemTex, "SemTex", "http://www.exploit-db.com/exploits/25444", "2013-2094", SemTexSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:373:138: error: initializer element is not constant
 static struct PossibleExploit PerfSweventExploit = {PerfSwevent, "PerfSwevent", "http://www.exploit-db.com/exploits/26131", "2013-2094", PerfSweventSize};
                                                                                                                                          ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:373:138: note: (near initialization for ‘PerfSweventExploit.vul_count’)
src/scans/exploit_suggester.c:373:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PerfSweventExploit = {PerfSwevent, "PerfSwevent", "http://www.exploit-db.com/exploits/26131", "2013-2094", PerfSweventSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:374:123: error: initializer element is not constant
 static struct PossibleExploit MsrPwnExploit = {MsrPwn, "MsrPwn", "http://www.exploit-db.com/exploits/27297", "2013-0268", MsrPwnSize};
                                                                                                                           ^~~~~~~~~~
src/scans/exploit_suggester.c:374:123: note: (near initialization for ‘MsrPwnExploit.vul_count’)
src/scans/exploit_suggester.c:374:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit MsrPwnExploit = {MsrPwn, "MsrPwn", "http://www.exploit-db.com/exploits/27297", "2013-0268", MsrPwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:375:135: error: initializer element is not constant
 static struct PossibleExploit TimeOutPwnExploit = {TimeOutPwn, "TimeOutPwn", "http://www.exploit-db.com/exploits/31346", "2014-0038", TimeOutPwnSize};
                                                                                                                                       ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:375:135: note: (near initialization for ‘TimeOutPwnExploit.vul_count’)
src/scans/exploit_suggester.c:375:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit TimeOutPwnExploit = {TimeOutPwn, "TimeOutPwn", "http://www.exploit-db.com/exploits/31346", "2014-0038", TimeOutPwnSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:376:166: error: initializer element is not constant
 static struct PossibleExploit RawModePTYExploit = {RawModePTY, "RawModePTY", "http://packetstormsecurity.com/files/download/126603/cve-2014-0196-md.c", "2014-0196", RawModePTYSize};
                                                                                                                                                                      ^~~~~~~~~~~~~~
src/scans/exploit_suggester.c:376:166: note: (near initialization for ‘RawModePTYExploit.vul_count’)
src/scans/exploit_suggester.c:376:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit RawModePTYExploit = {RawModePTY, "RawModePTY", "http://packetstormsecurity.com/files/download/126603/cve-2014-0196-md.c", "2014-0196", RawModePTYSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:377:132: error: initializer element is not constant
 static struct PossibleExploit OverlayfsExploit = {Overlayfs, "Overlayfs", "http://www.exploit-db.com/exploits/39230", "2015-8660", OverlayfsSize};
                                                                                                                                    ^~~~~~~~~~~~~
src/scans/exploit_suggester.c:377:132: note: (near initialization for ‘OverlayfsExploit.vul_count’)
src/scans/exploit_suggester.c:377:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit OverlayfsExploit = {Overlayfs, "Overlayfs", "http://www.exploit-db.com/exploits/39230", "2015-8660", OverlayfsSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:378:120: error: initializer element is not constant
 static struct PossibleExploit PPKeyExploit = {PPKey, "PPKey", "http://www.exploit-db.com/exploits/39277", "2016-0728", PPKeySize};
                                                                                                                        ^~~~~~~~~
src/scans/exploit_suggester.c:378:120: note: (near initialization for ‘PPKeyExploit.vul_count’)
src/scans/exploit_suggester.c:378:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PPKeyExploit = {PPKey, "PPKey", "http://www.exploit-db.com/exploits/39277", "2016-0728", PPKeySize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:379:129: error: initializer element is not constant
 static struct PossibleExploit DirtyCowExploit = {DirtyCow, "DirtyCow", "http://www.exploit-db.com/exploits/40616", "2016-5195", DirtyCowSize};
                                                                                                                                 ^~~~~~~~~~~~
src/scans/exploit_suggester.c:379:129: note: (near initialization for ‘DirtyCowExploit.vul_count’)
src/scans/exploit_suggester.c:379:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit DirtyCowExploit = {DirtyCow, "DirtyCow", "http://www.exploit-db.com/exploits/40616", "2016-5195", DirtyCowSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:380:129: error: initializer element is not constant
 static struct PossibleExploit AfPacketExploit = {AfPacket, "AfPacket", "http://www.exploit-db.com/exploits/40871", "2016-8655", AfPacketSize};
                                                                                                                                 ^~~~~~~~~~~~
src/scans/exploit_suggester.c:380:129: note: (near initialization for ‘AfPacketExploit.vul_count’)
src/scans/exploit_suggester.c:380:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit AfPacketExploit = {AfPacket, "AfPacket", "http://www.exploit-db.com/exploits/40871", "2016-8655", AfPacketSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:381:144: error: initializer element is not constant
 static struct PossibleExploit PacketSetRingExploit = {PacketSetRing, "PacketSetRing", "http://www.exploit-db.com/exploits/41994", "2017-7308", PacketSetRingSize};
                                                                                                                                                ^~~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:381:144: note: (near initialization for ‘PacketSetRingExploit.vul_count’)
src/scans/exploit_suggester.c:381:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit PacketSetRingExploit = {PacketSetRing, "PacketSetRing", "http://www.exploit-db.com/exploits/41994", "2017-7308", PacketSetRingSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:382:132: error: initializer element is not constant
 static struct PossibleExploit CloneNewUserExploit = {CloneNewUser, "CloneNewUser", "http://www.exploit-db.com/exploits/38390", "", CloneNewUserSize};
                                                                                                                                    ^~~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:382:132: note: (near initialization for ‘CloneNewUserExploit.vul_count’)
src/scans/exploit_suggester.c:382:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit CloneNewUserExploit = {CloneNewUser, "CloneNewUser", "http://www.exploit-db.com/exploits/38390", "", CloneNewUserSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:383:127: error: initializer element is not constant
 static struct PossibleExploit GetRektExploit = {GetRekt, "GetRekt", "http://www.exploit-db.com/exploits/45010", "2017-16695", GetRektSize};
                                                                                                                               ^~~~~~~~~~~
src/scans/exploit_suggester.c:383:127: note: (near initialization for ‘GetRektExploit.vul_count’)
src/scans/exploit_suggester.c:383:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit GetRektExploit = {GetRekt, "GetRekt", "http://www.exploit-db.com/exploits/45010", "2017-16695", GetRektSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
src/scans/exploit_suggester.c:384:130: error: initializer element is not constant
 static struct PossibleExploit ExploitXExploit = {ExploitX, "ExploitX", "http://www.exploit-db.com/exploits/45697", "2018-14665", ExploitXSize};
                                                                                                                                  ^~~~~~~~~~~~
src/scans/exploit_suggester.c:384:130: note: (near initialization for ‘ExploitXExploit.vul_count’)
src/scans/exploit_suggester.c:384:15: warning: missing initializer for field ‘vul_count’ of ‘struct PossibleExploit’ [-Wmissing-field-initializers]
 static struct PossibleExploit ExploitXExploit = {ExploitX, "ExploitX", "http://www.exploit-db.com/exploits/45697", "2018-14665", ExploitXSize};
               ^~~~~~~~~~~~~~~
src/scans/exploit_suggester.c:28:24: note: ‘vul_count’ declared here
     const unsigned int vul_count; /* Size of vuln_versions */
                        ^~~~~~~~~
make: *** [obj/exploit_suggester.o] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.