[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4339] add a length check on binary message parsing
From: |
Pascal Brisset |
Subject: |
[paparazzi-commits] [4339] add a length check on binary message parsing |
Date: |
Thu, 19 Nov 2009 17:47:18 +0000 |
Revision: 4339
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4339
Author: hecto
Date: 2009-11-19 17:47:18 +0000 (Thu, 19 Nov 2009)
Log Message:
-----------
add a length check on binary message parsing
Modified Paths:
--------------
paparazzi3/trunk/sw/lib/ocaml/pprz.ml
Modified: paparazzi3/trunk/sw/lib/ocaml/pprz.ml
===================================================================
--- paparazzi3/trunk/sw/lib/ocaml/pprz.ml 2009-11-16 17:30:04 UTC (rev
4338)
+++ paparazzi3/trunk/sw/lib/ocaml/pprz.ml 2009-11-19 17:47:18 UTC (rev
4339)
@@ -450,7 +450,11 @@
Debug.call 'T' (fun f -> fprintf f "Pprz.values id=%d\n" id);
let rec loop = fun index fields ->
match fields with
- [] -> []
+ [] ->
+ if index = String.length buffer then
+ []
+ else
+ failwith (sprintf "Pprz.values_of_payload, too many bytes: %s"
(Debug.xprint buffer))
| (field_name, field_descr)::fs ->
let (value, n) = value_field buffer index field_descr in
(field_name, value) :: loop (index+n) fs in
@@ -520,7 +524,12 @@
let message_send = fun sender msg_name values ->
let m = snd (message_of_name msg_name) in
let s = string_of_message m values in
- Ivy.send (sprintf "%s %s" sender s)
+ let msg = sprintf "%s %s" sender s in
+ let n = String.length msg in
+ if n > 1000 then (** FIXME: to prevent Ivy bug on long message *)
+ fprintf stderr "Discarding long ivy message (%d bytes)\n%!" n
+ else
+ Ivy.send msg
let message_bind = fun ?sender msg_name cb ->
match sender with
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4339] add a length check on binary message parsing,
Pascal Brisset <=