Description: Fix for RPC crash backported from Wireshark 1.2.12

diff -urN wireshark-1.2.11/epan/dissectors/packet-rpc.c wireshark-1.2.12/epan/dissectors/packet-rpc.c
--- wireshark-1.2.11/epan/dissectors/packet-rpc.c	2010-08-29 18:24:47.000000000 -0700
+++ wireshark-1.2.12/epan/dissectors/packet-rpc.c	2010-10-11 11:29:29.000000000 -0700
@@ -2842,6 +2842,7 @@
 {
 	const char *saved_proto;
 	volatile gboolean rpc_succeeded;
+	void *pd_save;
 
 	/*
 	 * Catch the ReportedBoundsError exception; if
@@ -2856,6 +2857,7 @@
 	 */
 	saved_proto = pinfo->current_proto;
 	rpc_succeeded = FALSE;
+	pd_save = pinfo->private_data;
 	TRY {
 		rpc_succeeded = (*dissector)(rec_tvb, pinfo, tree,
 		    frag_tvb, ipfd_head, TRUE, rpc_rm, first_pdu);
@@ -2867,6 +2869,12 @@
 		show_reported_bounds_error(tvb, pinfo, tree);
 		pinfo->current_proto = saved_proto;
 
+		/*  Restore the private_data structure in case one of the
+		 *  called dissectors modified it (and, due to the exception,
+		 *  was unable to restore it).
+		 */
+		pinfo->private_data = pd_save;
+
 		/*
 		 * We treat this as a "successful" dissection of
 		 * an RPC packet, as "dissect_rpc_message()"
