diff --git a/package/gluon-mesh-babel/src/respondd.c b/package/gluon-mesh-babel/src/respondd.c
index 075aa0649951bd6ab33db5533cf14795da6f9cdb..dd47e36636f1d29ad812eaf37a3f3f5b7f19cb5e 100644
--- a/package/gluon-mesh-babel/src/respondd.c
+++ b/package/gluon-mesh-babel/src/respondd.c
@@ -543,11 +543,12 @@ static int ask_l3roamd_for_client_count() {
 
 	int rc = 0;
 	do {
-		buf = realloc(buf, already_read + SOCKET_INPUT_BUFFER_SIZE + 1);
-		if (buf == NULL) {
+		char *buf_tmp = realloc(buf, already_read + SOCKET_INPUT_BUFFER_SIZE + 1);
+		if (buf_tmp == NULL) {
 			fprintf(stderr, "could not allocate memory for buffer\n");
 			goto end;
 		}
+		buf = buf_tmp;
 
 		rc = read(fd, &buf[already_read], SOCKET_INPUT_BUFFER_SIZE);
 		already_read+=rc;