diff --git a/src/common/pack.h b/src/common/pack.h
index 44c6a179feff4f5577a5a091c0272202a363ec3a..fabec48ffa96b8558ea5cadb6a5a7bc3eb15faa3 100644
--- a/src/common/pack.h
+++ b/src/common/pack.h
@@ -205,7 +205,7 @@ int	unpackmem_array(char *valp, uint32_t size_valp, Buf buffer);
 
 #define safe_pack_bit_fmt(bitmap,max_len,buf) do {	\
 	assert(buf->magic == BUF_MAGIC);		\
-	assert(max_len <= 0xffff);			\
+	assert(max_len < 0xffff);			\
 	if (bitmap) {					\
 		char _tmp_str[max_len];			\
 		uint32_t _size;				\
@@ -241,6 +241,18 @@ int	unpackmem_array(char *valp, uint32_t size_valp, Buf buffer);
 	packmem(str,(uint16_t)_size,buf);		\
 } while (0)				
 
+#define pack_bit_fmt(bitmap,buf) do {	\
+	assert(buf->magic == BUF_MAGIC);		\
+	if (bitmap) {					\
+		char _tmp_str[0xfffe];			\
+		uint32_t _size;				\
+		bit_fmt(_tmp_str,0xfffe,bitmap);	\
+		_size = strlen(_tmp_str)+1;		\
+		packmem(_tmp_str,(uint16_t)_size,buf);	\
+	} else						\
+		packmem(NULL,(uint16_t)0,buf);		\
+} while (0)				
+
 #define unpackstr_ptr		                        \
         unpackmem_ptr