Changeset: 30aae7de3279 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=30aae7de3279
Modified Files:
tools/merovingian/daemon/controlrunner.c
Branch: Aug2011
Log Message:
controlRunner: avoid using alloca
diffs (51 lines):
diff --git a/tools/merovingian/daemon/controlrunner.c
b/tools/merovingian/daemon/controlrunner.c
--- a/tools/merovingian/daemon/controlrunner.c
+++ b/tools/merovingian/daemon/controlrunner.c
@@ -134,7 +134,7 @@ controlRunner(void *d)
size_t len;
err e;
int maxsock;
- char *origin;
+ char origin[128];
if (usock > tsock) {
maxsock = usock + 1;
@@ -184,7 +184,7 @@ controlRunner(void *d)
continue;
}
- origin = "(local)";
+ snprintf(origin, sizeof(origin), "(local)");
/* do password ritual for TCP connections */
if (sock == tsock) {
@@ -198,7 +198,7 @@ controlRunner(void *d)
{
Mfprintf(_mero_ctlerr, "couldn't get peername
of client: %s\n",
strerror(errno));
- origin = "(unknown)";
+ snprintf(origin, sizeof(origin), "(unknown)");
} else {
/* avoid doing this, it requires some includes
that probably
* give trouble on windowz
@@ -207,18 +207,14 @@ controlRunner(void *d)
struct hostent *hoste =
gethostbyaddr(&saddr.sin_addr.s_addr,
4, saddr.sin_family);
if (hoste == NULL) {
- origin = alloca(sizeof(char) *
- ((3 + 1 + 3 + 1 + 3 + 1
+ 3) + 1));
- sprintf(origin, "%u.%u.%u.%u:%u",
+ snprintf(origin, sizeof(origin),
"%u.%u.%u.%u:%u",
(unsigned)((ntohl(saddr.sin_addr.s_addr) >> 24) & 0xff),
(unsigned)((ntohl(saddr.sin_addr.s_addr) >> 16) & 0xff),
(unsigned)((ntohl(saddr.sin_addr.s_addr) >> 8) & 0xff),
(unsigned)(ntohl(saddr.sin_addr.s_addr) & 0xff),
(unsigned)(ntohs(saddr.sin_port)));
} else {
- origin = alloca(sizeof(char) *
- (strlen(hoste->h_name)
+ 1 + 5 + 1));
- sprintf(origin, "%s:%u",
+ snprintf(origin, sizeof(origin),
"%s:%u",
hoste->h_name,
(unsigned)(ntohs(saddr.sin_port)));
}
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list