diff options
author | Guy Harris <guy@alum.mit.edu> | 2011-06-10 17:16:09 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2011-06-10 17:16:09 +0000 |
commit | 6584ad978191da04c3f3a5f9354be5412a5620ff (patch) | |
tree | c411188d9bf6ed48ea5cd2a93f6c1eedbb6ffbd5 /gtk | |
parent | 59dc5adbc4066a84d129f19a3e53b4e6c39b2dc4 (diff) |
Add some more error checking.
svn path=/trunk/; revision=37648
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/iax2_analysis.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gtk/iax2_analysis.c b/gtk/iax2_analysis.c index bf1586ee4a..4556543f03 100644 --- a/gtk/iax2_analysis.c +++ b/gtk/iax2_analysis.c @@ -195,6 +195,7 @@ typedef enum { TAP_RTP_PADDING_ERROR, TAP_RTP_SHORT_FRAME, TAP_RTP_FILE_OPEN_ERROR, + TAP_RTP_FILE_WRITE_ERROR, TAP_RTP_NO_DATA } error_type_t; @@ -686,7 +687,7 @@ static void iax2_packet_save_payload(tap_iax2_save_info_t *saveinfo, const struct _iax2_info_t *iax2info) { const guint8 *data; - /* size_t nchars; */ + size_t nchars; /* is this the first packet we got in this direction? */ if (statinfo->flags & STAT_FLAG_FIRST) { @@ -712,11 +713,21 @@ static void iax2_packet_save_payload(tap_iax2_save_info_t *saveinfo, if (iax2info->payload_len > 0) { data = iax2info->payload_data; - /* nchars= */fwrite(data, sizeof(unsigned char), iax2info->payload_len, saveinfo->fp); - /* XXX: Should check for write error ? */ + nchars = fwrite(data, sizeof(unsigned char), iax2info->payload_len, saveinfo->fp); + if (nchars != iax2info->payload_len) { + /* Write error or short write */ + saveinfo->saved = FALSE; + saveinfo->error_type = TAP_RTP_FILE_WRITE_ERROR; + return; + } saveinfo->count+=iax2info->payload_len; - fflush(saveinfo->fp); + if (fflush(saveinfo->fp) == EOF) { + /* Write error */ + saveinfo->saved = FALSE; + saveinfo->error_type = TAP_RTP_FILE_WRITE_ERROR; + return; + } saveinfo->saved = TRUE; return; } |