aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sharkd_session.c10
-rw-r--r--test/captures/trunc.pcapbin0 -> 995 bytes
-rw-r--r--test/suite_sharkd.py9
3 files changed, 19 insertions, 0 deletions
diff --git a/sharkd_session.c b/sharkd_session.c
index c9aa258407..7faef005f6 100644
--- a/sharkd_session.c
+++ b/sharkd_session.c
@@ -1087,7 +1087,17 @@ sharkd_session_process_load(const char *buf, const jsmntok_t *tokens, int count)
ENDTRY;
if (err == 0)
+ {
sharkd_json_simple_ok(rpcid);
+ }
+ else
+ {
+ sharkd_json_result_prologue(rpcid);
+ sharkd_json_value_string("status", wtap_strerror(err));
+ sharkd_json_value_anyf("err", "%d", err);
+ sharkd_json_result_epilogue();
+ }
+
}
/**
diff --git a/test/captures/trunc.pcap b/test/captures/trunc.pcap
new file mode 100644
index 0000000000..8dd75ed5ac
--- /dev/null
+++ b/test/captures/trunc.pcap
Binary files differ
diff --git a/test/suite_sharkd.py b/test/suite_sharkd.py
index 4f3a8d4fcb..93b263dd50 100644
--- a/test/suite_sharkd.py
+++ b/test/suite_sharkd.py
@@ -70,6 +70,15 @@ class case_sharkd(subprocesstest.SubprocessTestCase):
{"jsonrpc":"2.0","id":1,"error":{"code":-2001,"message":"Unable to open the file"}},
))
+ def test_sharkd_req_load_truncated_pcap(self, check_sharkd_session, capture_file):
+ check_sharkd_session((
+ {"jsonrpc":"2.0", "id":1, "method":"load",
+ "params":{"file": capture_file('trunc.pcap')}
+ },
+ ), (
+ {"jsonrpc":"2.0","id":1,"result":{"status":"Less data was read than was expected","err":-12}},
+ ))
+
def test_sharkd_req_status_no_pcap(self, check_sharkd_session):
check_sharkd_session((
{"jsonrpc":"2.0", "id":1, "method":"status"},