Giter Club home page Giter Club logo

iouyap's Introduction

iouyap

Bridge IOU to UDP, TAP and Ethernet. Please note that iouyap has been replaced by uBridge https://github.com/GNS3/ubridge

Installation on Linux (Debian based)

sudo apt-get install git bison flex

git clone http://github.com/ndevilla/iniparser.git
cd iniparser
make
sudo cp libiniparser.* /usr/lib/
sudo cp src/iniparser.h /usr/local/include
sudo cp src/dictionary.h /usr/local/include
cd ..

git clone https://github.com/GNS3/iouyap.git
cd iouyap
make
sudo make install

iouyap's People

Contributors

anubisg1 avatar fcolista avatar grossmj avatar jseutter avatar julien-duponchelle avatar raizo62 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iouyap's Issues

deprecate usage of gethostbyname()

[ 63s] iouyap.i586: I: binary-or-shlib-calls-gethostbyname /usr/bin/iouyap
[ 63s] The binary calls gethostbyname(). Please ask the developers to port the code to use getaddrinfo().

something like this should work:

SFML/SFML@34d866d

IOU to Dynamips causes IOUYAP drop out

crash on adding additional connection at run time:

started with:
IOU1 - IOU2
(all good)
add:
IOU1 - IOU2
\ /
Dynamips
(fall over)

Dump as follows:

=> Server notification: node IOU1: iouyap has stopped running
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30001 : 192.168.56.101 : 30002
iouyap.c:main:1232: Received signal 1
iouyap.c:main:1250: Reloading configuration because of SIGHUP
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30001 : 192.168.56.101 : 30002
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30003 : 10.255.255.1 : 10001
iouyap.c:open_tunnel_udp:744: Could not connect

Server notification: node IOU2: iouyap has stopped running
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30002 : 192.168.56.101 : 30001
iouyap.c:main:1232: Received signal 1
iouyap.c:main:1250: Reloading configuration because of SIGHUP
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30002 : 192.168.56.101 : 30001
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30004 : 10.255.255.1 : 10002
iouyap.c:open_tunnel_udp:744: Could not connect


Different message same problem if I start up with

IOU1 - IOU2
\ /
Dynamips

Dump

=> Server notification: node IOU1: iouyap has stopped running
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30001 : 10.255.255.1 : 10001
iouyap.c:open_tunnel_udp:744: Could not connect

Server notification: node IOU2: iouyap has stopped running
iouyap.c:open_tunnel_udp:689: DYNAMIPS 30002 : 10.255.255.1 : 10002
iouyap.c:open_tunnel_udp:744: Could not connect

iouyap.c:743:41: error: 'IFF_MULTI_QUEUE' undeclared (first use in this function)

after commit 1c7c668 While compiling iouyap, on some systems (for example opensuse 12.3) IFF_MULTI_QUEUE is not supported. this cause to fail to compile iouyap

[   32s] + cd iouyap-0.1
[   32s] + bison --yacc -dv netmap_parse.y
[   32s] + flex netmap_scan.l
[   32s] + gcc -Wall -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g config.c iouyap.c lex.yy.c netmap.c y.tab.c -o iouyap -liniparser -lpthread
[   32s] iouyap.c: In function 'open_span_dev':
[   32s] iouyap.c:743:41: error: 'IFF_MULTI_QUEUE' undeclared (first use in this function)
[   32s] iouyap.c:743:41: note: each undeclared identifier is reported only once for each function it appears in
[   32s] iouyap.c: In function 'main':
[   32s] iouyap.c:1451:17: warning: ignoring return value of 'daemon', declared with attribute warn_unused_result [-Wunused-result]
[   32s] iouyap.c: In function 'lock_socket':
[   32s] iouyap.c:180:13: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result [-Wunused-result]
[   32s] iouyap.c: In function 'open_pcap_file':
[   32s] iouyap.c:794:23: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result [-Wunused-result]
[   33s] iouyap.c: In function 'foreign_listener':
[   33s] iouyap.c:421:15: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
[   33s] iouyap.c: In function 'iou_listener':
[   33s] iouyap.c:548:15: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
[   33s] error: Bad exit status from /var/tmp/rpm-tmp.kRqCuw (%build)

Capabilities appear not set during install

Last command in the installation script is:
sudo make install

This results in the execution of:
chmod +x iouyap
sudo cp iouyap /usr/local/bin
sudo setcap cap_net_admin,cap_net_raw=ep iouyap

Executing '/sbin/getcap $(which iouyap)' to verify capabilities yields nothing.

I believe that the command:
'sudo setcap cap_net_admin,cap_net_raw=ep iouyap'
needs to be run on the iouyap in /usr/local/bin ala perhaps:
'sudo setcap cap_net_admin,cap_net_raw=ep $(which iouyap)'
After I did that, my capabilities were set.

Thanks for all of your hard work, developers!

Can't build iouyap on ubuntu 12.04

I've cloned latest source code. Build on ubuntu 12.04 not works.

$ make
gcc -I -g -DDEBUG -Wall -c -o iouyap.o iouyap.c
bison -y -d netmap_parse.y
mv -f y.tab.c netmap_parse.c
gcc -I -g -DDEBUG -Wall -c -o netmap_parse.o netmap_parse.c
flex -t netmap_scan.l > netmap_scan.c
gcc -I -g -DDEBUG -Wall -c -o netmap_scan.o netmap_scan.c
gcc -I -g -DDEBUG -Wall -c -o netmap.o netmap.c
gcc -I -g -DDEBUG -Wall -c -o config.o config.c
gcc -I iouyap.o netmap_parse.o netmap_scan.o netmap.o config.o -liniparser -lpthread -o iouyap
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function _start': (.text+0x20): undefined reference tomain'
netmap_parse.o: In function yyparse': netmap_parse.c:(.text+0x82a): undefined reference tounpack_port'
netmap_parse.c:(.text+0xd41): undefined reference to yap_verbose' netmap.o: In functionend_segment':
netmap.c:(.text+0x614): undefined reference to yap_verbose' netmap.c:(.text+0x796): undefined reference toyap_verbose'
netmap.o: In function add_node': netmap.c:(.text+0x8c8): undefined reference toyap_verbose'
netmap.c:(.text+0xa5a): undefined reference to yap_appl_id' netmap.c:(.text+0xa8f): undefined reference topack_port'
netmap.c:(.text+0xa9c): undefined reference to port_table' netmap.o: In functiondump_port_table':
netmap.c:(.text+0xaec): undefined reference to port_table' netmap.c:(.text+0xb1b): undefined reference tounpack_port'
netmap.c:(.text+0xb4f): undefined reference to port_table' netmap.c:(.text+0xb82): undefined reference toyap_appl_id'
netmap.c:(.text+0xba8): undefined reference to port_table' netmap.c:(.text+0xbe1): undefined reference toyap_appl_id'
netmap.c:(.text+0xc00): undefined reference to pack_port' netmap.o: In functionparse_netmap':
netmap.c:(.text+0xeb0): undefined reference to yap_verbose' config.o: In functionini_find':
config.c:(.text+0xf): undefined reference to yap_config' config.o: In functionini_find_id':
config.c:(.text+0xc5): undefined reference to yap_appl_id' config.o: In functionini_find_port':
config.c:(.text+0x14f): undefined reference to yap_appl_id' config.o: In functionini_getstr':
config.c:(.text+0x1e1): undefined reference to yap_config' config.o: In functionini_getstr_id':
config.c:(.text+0x2d0): undefined reference to yap_appl_id' config.o: In functionini_getstr_port':
config.c:(.text+0x38f): undefined reference to yap_appl_id' config.o: In functionini_getint':
config.c:(.text+0x508): undefined reference to yap_config' config.o: In functionini_getint_id':
config.c:(.text+0x5f6): undefined reference to yap_appl_id' config.o: In functionini_getint_port':
config.c:(.text+0x6b5): undefined reference to yap_appl_id' config.o: In functionini_getbool':
config.c:(.text+0x80d): undefined reference to yap_config' config.o: In functionini_getbool_id':
config.c:(.text+0x8fb): undefined reference to yap_appl_id' config.o: In functionini_getbool_port':
config.c:(.text+0x9ba): undefined reference to yap_appl_id' config.o: In functionini_getdouble':
config.c:(.text+0xb12): undefined reference to yap_config' config.o: In functionini_getdouble_id':
config.c:(.text+0xc0d): undefined reference to yap_appl_id' config.o: In functionini_getdouble_port':
config.c:(.text+0xccc): undefined reference to `yap_appl_id'
collect2: error: ld returned 1 exit status
make: *** [iouyap] Error 1
rm netmap_scan.c netmap_parse.c

buffer overflow via stack and heap overflows via sprintf(...,"%s",...)

Security audit handled by the openSUSE security team ( https://bugzilla.suse.com/show_bug.cgi?id=904060) found "a lot of stack and heap overflows via sprintf(...,"%s",...) calls with input from config files (sprintf in .y file) and command line args."

to follow the patch that should fix the issue. Please review and merge upstream.

diff --git a/Makefile b/Makefile
index 21b6cce..bc8df5a 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@ SHELL = /bin/sh

 srcdir = .

-CC = gcc #-O3
+CC = gcc -I . #-O3
 CDEBUG = -g -DDEBUG
 CFLAGS = $(CDEBUG) -Wall

diff --git a/config.c b/config.c
index 2ae6854..81351a5 100644
--- a/config.c
+++ b/config.c
@@ -27,12 +27,12 @@ extern short yap_appl_id;
 extern dictionary *yap_config;


-#define KEY_DEF(key, param) \
-  sprintf(key, "%s:%s", DEFAULT_SECTION, param)
-#define KEY_ID(key, param)  \
-  sprintf(key, "%d:%s", yap_appl_id, param)
-#define KEY_PORT(key, port, param) \
-  sprintf(key, "%d:%s:%s", yap_appl_id, port, param)
+#define KEY_DEF(key, n, param) \
+  snprintf(key, (n), "%s:%s", DEFAULT_SECTION, param)
+#define KEY_ID(key, n, param)  \
+  snprintf(key, (n), "%d:%s", yap_appl_id, param)
+#define KEY_PORT(key, n, port, param) \
+  snprintf(key, (n), "%d:%s:%s", yap_appl_id, port, param)


 int
@@ -47,7 +47,7 @@ ini_find_default (char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_DEF (key, param);
+  KEY_DEF (key, sizeof(key), param);
   return ini_find (key);
 }

@@ -57,7 +57,7 @@ ini_find_id (char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_ID (key, param);
+  KEY_ID (key, sizeof(key), param);
   return ini_find (key);
 }

@@ -67,7 +67,7 @@ ini_find_port (char *port, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_PORT (key, port, param);
+  KEY_PORT (key, sizeof(key), port, param);
   return ini_find (key);
 }

@@ -88,7 +88,7 @@ ini_getstr_default (char **value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_DEF (key, param);
+  KEY_DEF (key, sizeof(key), param);
   if (ini_getstr (value, key))
     return 1;
   return 0;
@@ -100,7 +100,7 @@ ini_getstr_id (char **value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_ID (key, param);
+  KEY_ID (key, sizeof(key), param);
   if (ini_getstr (value, key))
     return 1;
   return ini_getstr_default (value, param);
@@ -112,7 +112,7 @@ ini_getstr_port (char **value, char *port, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_PORT (key, port, param);
+  KEY_PORT (key, sizeof(key), port, param);
   if (ini_getstr (value, key))
     return 1;
   return ini_getstr_id (value, param);
@@ -168,7 +168,7 @@ ini_getint_default (int *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_DEF (key, param);
+  KEY_DEF (key, sizeof(key), param);
   if (ini_getint (value, key))
     return 1;
   return 0;
@@ -180,7 +180,7 @@ ini_getint_id (int *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_ID (key, param);
+  KEY_ID (key, sizeof(key), param);
   if (ini_getint (value, key))
     return 1;
   return ini_getint_default (value, param);
@@ -192,7 +192,7 @@ ini_getint_port (int *value, char *port, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_PORT (key, port, param);
+  KEY_PORT (key, sizeof(key), port, param);
   if (ini_getint (value, key))
     return 1;
   return ini_getint_id (value, param);
@@ -248,7 +248,7 @@ ini_getbool_default (int *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_DEF (key, param);
+  KEY_DEF (key, sizeof(key), param);
   if (ini_getbool (value, key))
     return 1;
   return 0;
@@ -260,7 +260,7 @@ ini_getbool_id (int *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_ID (key, param);
+  KEY_ID (key, sizeof(key), param);
   if (ini_getbool (value, key))
     return 1;
   return ini_getbool_default (value, param);
@@ -272,7 +272,7 @@ ini_getbool_port (int *value, char *port, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_PORT (key, port, param);
+  KEY_PORT (key, sizeof(key), port, param);
   if (ini_getbool (value, key))
     return 1;
   return ini_getbool_id (value, param);
@@ -328,7 +328,7 @@ ini_getdouble_default (double *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_DEF (key, param);
+  KEY_DEF (key, sizeof(key), param);
   if (ini_getdouble (value, key))
     return 1;
   return 0;
@@ -340,7 +340,7 @@ ini_getdouble_id (double *value, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_ID (key, param);
+  KEY_ID (key, sizeof(key), param);
   if (ini_getdouble (value, key))
     return 1;
   return ini_getdouble_default (value, param);
@@ -352,7 +352,7 @@ ini_getdouble_port (double *value, char *port, char *param)
 {
   char key[MAX_KEY_SIZE];

-  KEY_PORT (key, port, param);
+  KEY_PORT (key, sizeof(key), port, param);
   if (ini_getdouble (value, key))
     return 1;
   return ini_getdouble_id (value, param);
diff --git a/iouyap.c b/iouyap.c
index f487d46..c15893d 100644
--- a/iouyap.c
+++ b/iouyap.c
@@ -179,7 +179,7 @@ lock_socket (const char *name)

   // We have the lock. Wipe out the file and put our PID in it.
   ftruncate (fd, 0);
-  pid_len = sprintf (pid, "%ld\n", (long) getpid ());
+  pid_len = snprintf (pid, sizeof(pid), "%ld\n", (long) getpid ());
   if (write (fd, pid, pid_len) == -1)
     {
       e = errno;
@@ -1046,7 +1046,7 @@ open_iou_udp ()
   hints.ai_next = NULL;

   // TODO: allow binding to a specific IP address
-  sprintf (local_port, "%u", get_iou_udp_port (yap_appl_id));
+  snprintf (local_port, sizeof(local_port), "%u", get_iou_udp_port (yap_appl_id));
   if (getaddrinfo (NULL, local_port, &hints, &result) != 0)
     fatal_error ("getaddrinfo");

@@ -1215,8 +1215,8 @@ create_foreign_threads (pthread_attr_t * thread_attrs,
       port_table[i].pcap_fd = NO_FD;

       port = unpack_port (i);
-      sprintf (port_key, "%d/%d", port.bay, port.unit);
-      sprintf (key, "%d:%s", yap_appl_id, port_key);
+      snprintf (port_key, sizeof(port_key), "%d/%d", port.bay, port.unit);
+      snprintf (key, sizeof(key), "%d:%s", yap_appl_id, port_key);

       /* Don't bother if the section doesn't even exist */
       if (!ini_find (key))
@@ -1545,7 +1545,7 @@ main (int argc, char **argv)
           iniparser_set (yap_config, cmdline_node, NULL);

           /* Now create the key=value pair */
-          sprintf (key, "%s:%s", cmdline_node, cmdline_dev_type);
+          snprintf (key, sizeof(key), "%s:%s", cmdline_node, cmdline_dev_type);
           iniparser_set (yap_config, key, cmdline_dev);

           free (cmdline_node);
diff --git a/netmap_parse.y b/netmap_parse.y
index c8478cd..b6865a4 100644
--- a/netmap_parse.y
+++ b/netmap_parse.y
@@ -130,7 +130,7 @@ host
     | '@' ADDRESS               {
                                     struct hostent *host;

-                                    sprintf($$, "@%s", $2);
+                                    snprintf($$, sizeof(yyval.pval), "@%s", $2);
                                     host = gethostbyname ($2);
                                     if (host == NULL)
                                       {

Make install issue

The Makefile for iouyap has the following entries:

install : iouyap
  setcap cap_net_admin,cap_net_raw=ep iouyap
  chmod +x iouyap
  sudo cp iouyap /usr/local/bin

However, when copying the file, the capabilities are not copied over.

Either the capabilities are set on file /usr/local/bin/iouyap after the copy or the file is moved to /usr/local/bin after setting capabilities.

Cheers,
ak.

packet parsing is vulnerable to memory corruption:

Security audit handled by the openSUSE security team ( https://bugzilla.suse.com/show_bug.cgi?id=904060) found "the packet parsing is vulnerable to memory corruption:

bytes_received -= IOU_HDR_SIZE;

without checking that there are at least IOU_HDR_SIZE bytes,
gives problems."

to follow the patch that should fix the issue. Please review and merge upstream.

diff --git a/iouyap.c b/iouyap.c
index c15893d..944331a 100644
--- a/iouyap.c
+++ b/iouyap.c
@@ -356,6 +356,9 @@ write_pcap_frame (int fd, const unsigned char *packet, size_t len,
   unsigned char buf[MAX_MTU + hdr_len];
   struct timeval ts;

+  if (caplen > MAX_MTU)
+     return -1;
+
   gettimeofday (&ts, 0);
   pcap_header.tv_sec = ts.tv_sec;
   pcap_header.tv_usec = ts.tv_usec;
@@ -398,7 +401,7 @@ foreign_listener (void *arg)
       /* Put received bytes after the (absent) IOU header */
       bytes_received = read (port->sfd, &buf[IOU_HDR_SIZE], MAX_MTU);

-      if (bytes_received == -1)
+      if (bytes_received <= 0)
         {
           /* When tunneling, because our sends are asynchronous, we
            * can get errors here from ICMP packets for UDP packets we
@@ -513,7 +516,7 @@ iou_listener (void *arg)
     {
       /* This receives from an IOU instance */
       bytes_received = read (sfd, buf, IOU_HDR_SIZE + MAX_MTU);
-      if (bytes_received == -1)
+      if (bytes_received <= 0)
         {
           log_error ("read");
           break;
@@ -536,6 +539,9 @@ iou_listener (void *arg)
         debug_log_fmt ("received %zd bytes for port %d (sfd=%d)\n",
                        bytes_received, port, sfd);

+      if (bytes_received <= IOU_HDR_SIZE)
+          continue; 
+
       /* Send on the packet, minus the IOU header */
       bytes_received -= IOU_HDR_SIZE;

iouyap SIGSEV when IPv6 localhost hostname present in /etc/hosts

On Arch Linux iouyap will fail to start any images when you have ipv6 localhost defined in /etc/hosts

::1 localhost.localdomain localhost jenkins

Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/home/mig/GNS3/images/IOU/i86bi_linux_l2-ipbasek9-ms.jan24-2013-team_track.bin'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xf73a5749 in inet_pton () from /usr/lib32/libc.so.6
(gdb) bt
#0  0xf73a5749 in inet_pton () from /usr/lib32/libc.so.6
#1  0xf7287f01 in ?? () from /usr/lib32/libnss_files.so.2
#2  0xf72884a1 in _nss_files_gethostbyname3_r () from /usr/lib32/libnss_files.so.2
#3  0xf7288914 in _nss_files_gethostbyname_r () from /usr/lib32/libnss_files.so.2
#4  0xf739a214 in gethostbyname_r@@GLIBC_2.1.2 () from /usr/lib32/libc.so.6
#5  0xf73811a9 in gethostid () from /usr/lib32/libc.so.6
#6  0x08461405 in exit ()
#7  0x00000000 in ?? ()

perhaps unrelated but the function has a bug. From the manpage:
BUGS
gethostbyname() does not recognize components of a dotted IPv4 address string that are expressed in hexadecimal.

A workaround would be to comment the entry in /etc/hosts

Makefile:54: *** missing separator. Stop.

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.10
Release: 14.10
Codename: utopic

I cant figure this one out. When i run make I get the error "Makefile:54: *** missing separator. Stop."

Any ideas how I can resolve this?

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.