use binbuf_manage_new
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 8 Dec 2011 15:58:01 +0000 (15:58 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 8 Dec 2011 15:58:01 +0000 (15:58 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@66037 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_con/ecore_con_socks.c

index 6193c91..d44c1f5 100644 (file)
@@ -174,10 +174,17 @@ ecore_con_socks_svr_init(Ecore_Con_Server *svr)
    ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
    if (v4)
      {
-        size_t addrlen, ulen = 1;
+        size_t addrlen, buflen, ulen = 1;
         addrlen = svr->ecs->lookup ? strlen(svr->name) + 1: 0;
         if (svr->ecs->username) ulen += strlen(svr->ecs->username);
-        sbuf = alloca(sizeof(char) * (8  + ulen + addrlen));
+        buflen = sizeof(char) * (8  + ulen + addrlen);
+        sbuf = malloc(buflen);
+        if (!sbuf)
+          {
+             ecore_con_event_server_error(svr, "Memory allocation failure!");
+             _ecore_con_server_kill(svr);
+             return EINA_FALSE;
+          }
         /* http://en.wikipedia.org/wiki/SOCKS */
         sbuf[0] = 4;
         sbuf[1] = v4->bind ? 2 : 1;
@@ -196,8 +203,7 @@ ecore_con_socks_svr_init(Ecore_Con_Server *svr)
           sbuf[8] = 0;
         if (addrlen) memcpy(sbuf + 8 + ulen, svr->name, addrlen);
         
-        svr->ecs_buf = eina_binbuf_new();
-        eina_binbuf_append_length(svr->ecs_buf, sbuf, 8 + ulen + addrlen);
+        svr->ecs_buf = eina_binbuf_manage_new_length(sbuf, buflen);
      }
    return EINA_TRUE;
 }