telnet - Segmentation Fault 11 when telnetting in (C) -


i'm learning how create servers in c , keep getting "segmentation fault: 11" error when try telnetting server terminal. appreciated!

#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <errno.h>  void error(char *msg) {     fprintf(stderr, "%s: %s\n", msg, strerror(errno));     exit(1); }  int main(int argc, char *argv[]) {     char *advice[] = {         "take smaller bites\r\n",         "go tight jeans. no not make fat.\r\n",         "one word: inappropriate\r\n",         "just today, honest. tell boss *really* think\r\n",         "you might want rethink haircut\r\n"     };     int listener_d = socket(pf_inet, sock_stream, 0);      struct sockaddr_in name;     name.sin_family = pf_inet;     name.sin_port = (in_port_t)htons(30000);     name.sin_addr.s_addr = htonl(inaddr_any);     if(bind(listener_d, (struct sockaddr *) &name, sizeof(name))== -1)         error("cannot bind");      if (listen(listener_d, 10) == -1)         error("cannot listen");     puts("waiting connection");     while(1)     {         struct sockaddr_storage client_addr;         unsigned int address_size = sizeof(client_addr);         int connect_d = accept(listener_d, (struct sockaddr *) &client_addr, &address_size);         char msg = advice[0];          if (send(connect_d, msg, strlen(msg), 0) == -1)             error("cannot send");         close(connect_d);     }          return 0; } 

you're storing advice[0] char rather char *. won't fit, , truncated, making pointer invalid. store in char * (or const char *) instead.

i'd recommend turning on warnings in compiler, since have caught mistake. gcc , clang, use -wall -wextra -pedantic.


Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

php - Dynamic url re-writing using htaccess -

java - Multi-Label Document Classification -