Hello list,
Recently I'm browsing through wireshark sources, and in many dissectors 
(this is example from packet-epl_v1.c) there's code like this:
from dissect_epl_v1:
        info_str = ep_alloc(200);
        info_str[0] = 0;
	switch (epl_v1_service){
		case EPL_V1_SOC:
			g_snprintf(info_str, 200, "SoC    dest = %3d src = %3d   ", epl_v1_dest, epl_v1_src);
			break;
		case EPL_V1_EOC:
			g_snprintf(info_str, 200, "EoC    dest = %3d src = %3d   ", epl_v1_dest, epl_v1_src);
			break;
		case EPL_V1_PREQ:
			g_snprintf(info_str, 200, "PReq   dest = %3d src = %3d   ", epl_v1_dest, epl_v1_src);
			break;
		/* and so ... */
	}
        if(check_col(pinfo->cinfo, COL_INFO))
                col_add_str(pinfo->cinfo, COL_INFO, info_str);
Code is ok, and works fine... But I've got 3 questions:
  1/ There's ep_strdup_printf() function - shouldn't it be used in cases like it?
     (IMHO best way)
  2/ Why ep memory is used in first place, shouldn't be 
 	gchar info_str[200]; 
     used instead of
	gchar *info_str = ep_alloc(200); ?
  3/ 200 bytes buffer is overkill - shouldn't g_sprintf() be used?
     (if programmer make mistake in buffer size canary check will abort program)
or both 4 ways are ok, and there's no best one? :)
Regards.