--- wireshark-1.0.2.orig/debian/wireshark-common.shlibs
+++ wireshark-1.0.2/debian/wireshark-common.shlibs
@@ -0,0 +1,2 @@
+libwireshark 0 wireshark-common
+libwiretap 0 wireshark-common
--- wireshark-1.0.2.orig/debian/wireshark.menu
+++ wireshark-1.0.2/debian/wireshark.menu
@@ -0,0 +1,5 @@
+?package(wireshark):needs="X11" section="Applications/Network/Monitoring" \
+	title="Wireshark" \
+	command="/usr/bin/wireshark" \
+	icon="/usr/share/pixmaps/wsicon32.xpm"
+
--- wireshark-1.0.2.orig/debian/tshark.files
+++ wireshark-1.0.2/debian/tshark.files
@@ -0,0 +1,2 @@
+/usr/bin/tshark
+
--- wireshark-1.0.2.orig/debian/rules
+++ wireshark-1.0.2/debian/rules
@@ -0,0 +1,145 @@
+#!/usr/bin/make -f
+# MAde with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+include /usr/share/dpatch/dpatch.make 
+DB2MAN=/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
+
+
+DEB_HOST_GNU_TYPE       ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE      ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+PYTHON_VERSION=python2.4
+
+CFLAGS=-g -O2
+
+# Enable IEEE-conformant floating point math on alphas (not the default)
+ifeq (alpha-linux,$(DEB_HOST_GNU_TYPE))
+  CFLAGS += -mieee
+endif
+
+idl2deb.1: idl2deb.dbk
+	xsltproc --nonet --novalid $(DB2MAN) $<
+
+asn2deb.1: asn2deb.dbk
+	xsltproc --nonet --novalid $(DB2MAN) $<
+
+
+#TODO: --enable-setuid-install
+CONFIGURE_FLAGS=--prefix=/usr --sysconfdir=/usr/share --datadir=/usr/share --disable-static --disable-ssl --without-ucdsnmp --enable-gtk2 --libdir=/usr/lib/wireshark --enable-warnings-as-errors=no --with-plugins=/usr/lib/wireshark/plugins --with-lua=/usr/
+
+configure: configure-stamp
+configure-stamp: patch
+	dh_testdir
+
+	cp /usr/share/misc/config.guess /usr/share/misc/config.sub .
+	libtoolize --force --copy
+	-mkdir aclocal-missing
+	./autogen.sh
+	CFLAGS="$(CFLAGS)" ./configure $(CONFIGURE_FLAGS)
+
+	touch configure-stamp
+
+build: build-stamp idl2deb.1 asn2deb.1
+build-stamp: configure-stamp
+	$(MAKE)
+
+	touch build-stamp
+
+patch: patch-stamp
+patch-stamp:
+	dpatch apply-all
+
+
+clean: unpatch-stamp
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	[ ! -f Makefile ] || $(MAKE) distclean 
+	rm -f rdps wireshark.1 tshark.1 idl2deb.1 wireshark-filter.4 asn2deb.1 dumpcap.1 rawshark.1
+	rm -f conftest conftest.c
+	rm -f config.guess config.sub config.log
+	rm -f config.h.in config.h configure
+
+	dh_clean
+
+unpatch: unpatch-stamp
+unpatch-stamp:
+	dpatch deapply-all
+	rm -rf patch-stamp debian/patched
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	# Add here commands to install the files into debian/tmp
+	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
+	rm -rf $(CURDIR)/debian/tmp/usr/share/wireshark/COPYING
+	cp debian/license-text-about-dialog $(CURDIR)/debian/tmp/usr/share/wireshark/ABOUT.GPL
+	mkdir -p $(CURDIR)/debian/tmp/usr/share/applications/
+	cp wireshark.desktop $(CURDIR)/debian/tmp/usr/share/applications/
+	cp tools/idl2wrs.sh $(CURDIR)/debian/tmp/usr/bin/
+	cp debian/wireshark-root.desktop $(CURDIR)/debian/tmp/usr/share/applications/
+	mkdir -p $(CURDIR)/debian/tmp/usr/share/pixmaps/
+	cp image/hi48-app-wireshark.png $(CURDIR)/debian/tmp/usr/share/pixmaps/
+	cp image/wsicon32.xpm $(CURDIR)/debian/tmp/usr/share/pixmaps/
+	mkdir -p $(CURDIR)/debian/tmp/usr/lib/$(PYTHON_VERSION)/site-packages/
+	install -m 755 $(CURDIR)/idl2deb $(CURDIR)/debian/tmp/usr/bin/
+	install -m 755 $(CURDIR)/asn2deb $(CURDIR)/debian/tmp/usr/bin/
+	mkdir -p $(CURDIR)/debian/tmp/etc/wireshark/
+	mv $(CURDIR)/debian/tmp/usr/share/wireshark/init.lua \
+		$(CURDIR)/debian/tmp/etc/wireshark/
+	ln -s /etc/wireshark/init.lua \
+		$(CURDIR)/debian/tmp/usr/share/wireshark/init.lua
+	cp $(CURDIR)/tools/wireshark_be.py $(CURDIR)/tools/wireshark_gen.py \
+			$(CURDIR)/debian/tmp/usr/lib/$(PYTHON_VERSION)/site-packages/
+	mkdir -p $(CURDIR)/debian/tmp/usr/include/wireshark/
+	for F in `cat debian/wireshark-dev.header-files`; do \
+		cp --parents $$F $(CURDIR)/debian/tmp/usr/include/wireshark; \
+	done
+	# .a is no longer built; why was is used ?
+	#cp $(CURDIR)/wiretap/libwiretap.a $(CURDIR)/debian/tmp/usr/lib/
+	-rm -rf $(CURDIR)/debian/tmp/usr/man
+	dh_installman
+
+	dh_movefiles
+	dh_pysupport
+	dh_python
+	dh_installdocs
+	-rm debian/menu   # from upstream debian/ package
+	dh_installmenu
+	dh_installchangelogs NEWS
+
+# Build architecture-independent files here.
+binary-indep: install
+# We have nothing to do by default.
+
+check: install
+	# check all necessary headers are included
+	gcc -c debian/headers-check.c `pkg-config --cflags glib-2.0` -Idebian/wireshark-dev/usr/include/ -Idebian/wireshark-dev/usr/include/wireshark/ -o /dev/null
+
+# Build architecture-dependent files here.
+binary-arch: install check
+	dh_strip
+	dh_compress
+	dh_fixperms
+	#dh_fixperms -Xdumpcap
+
+	dh_installdeb
+	LD_LIBRARY_PATH=/usr/lib/wireshark/ dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+source diff:
+	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean install check binary-indep binary-arch binary
--- wireshark-1.0.2.orig/debian/headers-check.c
+++ wireshark-1.0.2/debian/headers-check.c
@@ -0,0 +1,4 @@
+#include <wireshark/config.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+
--- wireshark-1.0.2.orig/debian/changelog
+++ wireshark-1.0.2/debian/changelog
@@ -0,0 +1,1628 @@
+wireshark (1.0.2-3+lenny4) testing-proposed-updates; urgency=high
+
+  * Security fixes from Wireshark 1.0.6
+
+ -- Moritz Mühlenhoff <jmm@debian.org>  Sun, 08 Feb 2009 22:56:41 +0100
+
+wireshark (1.0.2-3+lenny3) testing-proposed-updates; urgency=high
+
+  * CVE-2008-5285 and another security issue from 1.0.5 (WLCCP)
+
+ -- Moritz Muehlenhoff <jmm@debian.org>  Sat, 20 Dec 2008 18:11:36 +0100
+
+wireshark (1.0.2-3+lenny2) testing-proposed-updates; urgency=high
+
+  * Fix CVE-2008-4680 to CVE-2008-4685 (Closes: #503589)
+
+ -- Moritz Muehlenhoff <jmm@debian.org>  Thu, 13 Nov 2008 23:13:27 +0100
+
+wireshark (1.0.2-3+lenny1) testing-security; urgency=low
+
+  * security fixes:
+   - Wireshark could crash while uncompressing zlib-compressed
+     packet data (CVE-2008-3933)
+   - The NCP dissector was susceptible to a number of problems,
+        including buffer overflows and an infinite loop
+        (CVE-2008-3146, CVE-2008-3932)
+   - Wireshark could crash while reading a Tektronix .rf5 file
+        (CVE-2008-3934)
+
+ -- Joost Yervante Damad <andete@debian.org>  Mon, 15 Sep 2008 20:12:46 +0200
+
+wireshark (1.0.2-3) unstable; urgency=low
+
+  * remove build-dependency on libsmi-dev; libsmi
+    seems to be in bad shape in Debian; don't want
+    to be dependant on it this close to the release
+
+ -- Joost Yervante Damad <andete@debian.org>  Tue, 22 Jul 2008 19:15:23 +0200
+
+wireshark (1.0.2-2) unstable; urgency=low
+
+  * switch to libcap2 (Closes: #489310)
+  * include rawshark in common (Closes: #490436)
+  * include dumpcap manpage (Closes: #490434)
+  * build-depend on libsmi-dev (Closes: #490429)
+  * switch to standards-version 3.8.0.1
+
+ -- Joost Yervante Damad <andete@debian.org>  Sun, 20 Jul 2008 18:34:25 +0200
+
+wireshark (1.0.2-1) unstable; urgency=high
+
+  * New upstream release 1.0.2
+    - release notes:
+     http://www.wireshark.org/docs/relnotes/wireshark-1.0.2.html
+    - security fixes:
+      - Wireshark could crash while reassembling packets
+        (CVE-2008-3145)
+
+ -- Joost Yervante Damad <andete@debian.org>  Fri, 11 Jul 2008 13:48:49 +0200
+
+wireshark (1.0.1-1) unstable; urgency=high
+
+  [ Frederic Peters ]
+  * debian/patches/20_set_foreground.dpatch: set black text for packet detail
+    rows that are set to a light gray background.  (closes: #478769)
+  * debian/control: updated Conflicts and Replaces to 1.0.0-3, so upgrades
+    from more versions are possible.
+
+  [ Joost Yervante Damad ]
+  * New upstream release 1.0.1
+    - release notes:
+     http://www.wireshark.org/docs/relnotes/wireshark-1.0.1.html
+    -  security fixes:
+      - The PANA and KISMET dissectors could force Wireshark to quit
+        unexpectedly
+      - The RTMPT dissector could crash
+      - The RMI dissector could disclose system memory
+      - The syslog dissector could crash
+    - (enable setuid dumpcap install -> disabled again for now,
+       needs discussion first)
+    - del 20_set_foreground.dpatch; incorporated upstream
+
+ -- Joost Yervante Damad <andete@debian.org>  Tue, 01 Jul 2008 21:08:31 +0200
+
+wireshark (1.0.0-3) unstable; urgency=low
+
+  * remove transitional "ethereal" packages
+    (Closes: #477529, #477532, #477534, #477541)
+  * create README.Debian with note about the sometimes surprising
+    display filter syntax (Closes: #456506, #456507)
+  * tethereal is completely gone now (Closes: #410058)
+  * be more liberal with respect to umask when creating files
+    (Closes: 191088): 19_umask.dpatch
+
+ -- Joost Yervante Damad <andete@debian.org>  Sat, 26 Apr 2008 10:20:02 +0200
+
+wireshark (1.0.0-2) unstable; urgency=low
+
+  [Joost Yervante Damad]
+  * avoid /usr/share/wireshark/wireshark (Closes: #476574)
+  * disable patch 07 and 14, I think patch 07 caused the
+    build failure which introduced patch 14
+  * this version works with "ForwardX11Trusted no" (Closes: #298740)
+  * disable patch 10 (obsolete)
+  * submission (tcp/587) is recognized as SMTP now (Closes: #456513)
+  * save as works for filtered output (Closes: #456502)
+  * preferences settings get active immediately now (Closes: #259319)
+
+  [Frederic Peters]
+  * debian/control: updated Depends from automake1.8 to automake1.9
+    (closes: #474341)
+
+ -- Joost Yervante Damad <andete@debian.org>  Tue, 22 Apr 2008 19:59:24 +0200
+
+wireshark (1.0.0-1) unstable; urgency=low
+
+  * Several security issues were solved in 0.99.7 already:
+    (closes: #452381)
+    * allow remote attackers to cause a denial of service (crash) via (1) a
+      crafted MP3 file or (2) unspecified vectors to the NCP dissector
+      (CVE-2007-6111)
+    * Buffer overflow in the PPP dissector Wireshark (formerly Ethereal)
+      0.99.6 allows remote attackers to cause a denial of service (crash)
+      and possibly execute arbitrary code via unknown vectors.
+      (CVE-2007-6112)
+    * Wireshark (formerly Ethereal) 0.10.12 to 0.99.6 allows remote
+      attackers to cause a denial of service (long loop) via a malformed DNP
+      packet (CVE-2007-6113)
+    * Multiple buffer overflows in Wireshark (formerly Ethereal) 0.99.0
+      through 0.99.6 allow remote attackers to cause a denial of service
+      (crash) and possibly execute arbitrary code via (1) the SSL dissector
+      or (2) the iSeries (OS/400) Communication trace file parser
+      (CVE-2007-6114)
+    * Buffer overflow in the ANSI MAP dissector for Wireshark (formerly
+      Ethereal) 0.99.5 to 0.99.6, when running on unspecified platforms,
+      allows remote attackers to cause a denial of service and possibly
+      execute arbitrary code via unknown vectors. (CVE-2007-6115)
+    * The Firebird/Interbase dissector in Wireshark (formerly Ethereal)
+      0.99.6 allows remote attackers to cause a denial of service (infinite
+      loop or crash) via unknown vectors. (CVE-2007-6116)
+    * Unspecified vulnerability in the HTTP dissector for Wireshark
+      (formerly Ethereal) 0.10.14 to 0.99.6 has unknown impact and remote
+      attack vectors related to chunked messages. (CVE-2007-6117)
+    * The MEGACO dissector in Wireshark (formerly Ethereal) 0.9.14 to 0.99.6
+      allows remote attackers to cause a denial of service (long loop and
+      resource consumption) via unknown vectors. (CVE-2007-6118)
+    * The DCP ETSI dissector in Wireshark (formerly Ethereal) 0.99.6 allows
+      remote attackers to cause a denial of service (long loop and resource
+      consumption) via unknown vectors. (CVE-2007-6119)
+    * The Bluetooth SDP dissector Wireshark (formerly Ethereal) 0.99.2 to
+      0.99.6 allows remote attackers to cause a denial of service (infinite
+      loop) via unknown vectors. (CVE-2007-6120)
+    * Wireshark (formerly Ethereal) 0.8.16 to 0.99.6 allows remote attackers
+      to cause a denial of service (crash) via a malformed RPC Portmap
+      packet. (CVE-2007-6121)
+  * current wireshark has SSL support (closes: #172939)
+  * and H323 support (closes: #117201)
+  * resizing columns bugfix was applied last year (closes: #369044)
+  * new upstream release 1.0.0
+    http://www.wireshark.org/docs/relnotes/wireshark-1.0.0.html
+  * remove debian/ directory from upstream
+  * update 14_disable-cmip.dpatch.
+  * if wireshark has no priv, it now prints:
+      dumpcap: There are no interfaces on which a capture can be done
+      (closes: #468400)
+  * wireshark uses su-to-root now (closes: #472478)
+  * vulnerabilities fixed:
+    * The X.509sat and other dissector could crash (CVE-2008-1561)
+    * The LDAP dissector could crash on Windows and other platforms.
+      (CVE-2008-1562)
+    * The SCCP dissector could crash while using the "decode as"
+      feature (CVE-2008-1563)
+
+ -- Joost Yervante Damad <andete@debian.org>  Tue, 01 Apr 2008 19:48:19 +0200
+
+wireshark (0.99.8-1) unstable; urgency=medium
+
+  * New upstream release.
+    * release notes:
+      http://www.wireshark.org/docs/relnotes/wireshark-0.99.8.html
+    * Fixes strptime() problem; debian/patches/18_strptime_proto.dpatch
+      no longer needed; (closes: #452772)
+    * Fixed security issues:
+      * The SCTP dissector could crash. (CVE-2008-1070)
+      * The SNMP dissector could crash. (CVE-2008-1071)
+      * (closes: #469488)
+  * updated debian/patches/05_plugin-libdir.dpatch, as upstream
+    incorporated part of the patch
+  * updated debian/patches/08_wireshark-desktop-menu.dpatch
+  * updated debian/patches/14_disable-cmip.dpatch
+  * use su-to-root isof gksu (closes: #454051)
+  * make init.lua a conffile (closes: #458689)
+  * use $(CURDIR) isof `pwd` in debian/rules
+  * lintian fixes:
+    * I: wireshark binary: desktop-entry-contains-encoding-key
+      /usr/share/applications/wireshark-root.desktop
+    * W: wireshark binary: su-wrapper-not-su-to-root
+      /usr/share/applications/wireshark-root.desktop gksu
+  * bump standards version to 3.7.2.2 (3.7.3.0 still needs more checking)
+  * update debhelper compat to 5
+  * bump standards version to 3.7.3.0
+  * update debhelper compat to 6
+  * remove debian/ dir from upstream tar file
+
+ -- Joost Yervante Damad <andete@debian.org>  Wed, 12 Mar 2008 20:47:56 +0100
+
+wireshark (0.99.7-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * debian/patches/18_strptime_proto.dpatch: Define __USE_XOPEN when
+    using the strptime function.  (closes: #452772)
+
+ -- dann frazier <dannf@debian.org>  Mon, 10 Mar 2008 14:16:45 -0600
+
+wireshark (0.99.7-1) unstable; urgency=high
+
+  * New upstream release.
+    * fixes several security issues:
+      * The IPv6 dissector could loop excessively.  (CVE-2007-6439)
+      * The USB dissector could loop excessively or crash.  (CVE-2007-6439)
+      * The SMB dissector could crash.  (CVE-2007-6438)
+      * The RPL dissector could go into an infinite loop.  (CVE-2007-6450)
+      * The WiMAX dissector could crash due to unaligned access on some
+        platforms.  (CVE-2007-6441)
+      * The CIP dissector could attempt to allocate a huge amount of memory
+        and crash.  (CVE-2007-6451)
+  * debian/patches/04_drop-capabilities.dpatch: disable "drop capabilities"
+    patch as Wireshark now has a dumpcap binary that drop capabilities and
+    capture network.  This fixes issues of dropping too many capabilities.
+    (closes: #453292)
+  * debian/control, debian/rules: enabled LUA support.  (closes: #412097)
+  * debian/patches/17_clique_rm_support.dpatch: add support for the CliqueRM
+    protocol.  (closes: #454739)
+  * debian/patches/05_plugin-libdir.dpatch: updated to fix plugin installation.
+    (closes: #454758)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 21 Dec 2007 17:56:59 +0100
+
+wireshark (0.99.7~pre1-2) unstable; urgency=low
+
+  * debian/rules: adds LD_LIBRARY_PATH when calling dpkg-shlibdeps and adds
+    a wireshark-common shlibs file.  (closes: #453801)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 05 Dec 2007 16:27:59 +0100
+
+wireshark (0.99.7~pre1-1) unstable; urgency=high
+
+  * New upstream pre-version; packaged since it fixes security issues:
+    * Could crash when reading an MP3 file.
+    * Could loop excessively while reading a malformed DNP packet.
+    * The SSL dissector could overflow a buffer.
+    * The ANSI MAP dissector could be susceptible to a buffer overflow on some
+      platforms.
+    * The Firebird/Interbase dissector could go into an infinite loop or
+      crash.
+    * The NCP dissector could cause a crash.
+    * The HTTP dissector could crash on some systems while decoding chunked
+      messages.
+    * The MEGACO dissector could enter a large loop and consume system
+      resources.
+    * The DCP ETSI dissector could enter a large loop and consume system
+      resources.
+    * The iSeries (OS/400) Communication trace file parser could overflow a
+      buffer.
+    * The PPP dissector could overflow a buffer.
+    * The Bluetooth SDP dissector could go into an infinite loop.
+    * A malformed RPC Portmap packet could cause a crash.
+  * debian/patches/03_preferences.dpatch: modified to directly change
+    epan/prefs.c instead of going through configure.in modification.
+  * debian/patches/04_drop-capabilities.dpatch: configure check for libcap has
+    been integrated upstream, removed from patch, but added required explicit
+    -lcap linkage.
+  * debian/patches/05_plugin-libdir.dpatch, debian/rules: reduced patch; using
+    a configure flag instead of overriding plugindir.
+  * debian/patches/08_wireshark-desktop-menu.dpatch: updated.
+  * debian/patches/14_disable-cmip.dpatch: updated.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 22 Nov 2007 19:49:41 +0100
+
+wireshark (0.99.6rel-5) unstable; urgency=low
+
+  * debian/patches/16_licence_about_location.dpatch: removed GPL copy from
+    file used to fill the About dialog and created a new file with reference
+    to copy in /usr/share/common-licences/
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 29 Sep 2007 15:56:38 +0200
+
+wireshark (0.99.6rel-4) unstable; urgency=low
+
+  * debian/patches/14_disable-cmip.dpatch: removed automake generated part as
+    it can cause problems on a second build.  (closes: #442760)
+  * debian/control: upgraded build-depends from libportaudio-dev to
+    portaudio19-dev (closes: #431222)
+  * debian/patches/08_wireshark-desktop-menu.dpatch: updated to add Encoding
+    entry, as required by desktop file spec
+  * debian/patches/08_wireshark-desktop-menu.dpatch: updated Categories entry
+    to remove Application.
+  * debian/wireshark-root.desktop: updated Categories to remove Application.
+  * debian/wireshark.menu: renamed Apps to Applications and Net to Network,
+    and added a subsubmenu, "Monitoring", to comply with new menu policy.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 28 Sep 2007 21:02:41 +0200
+
+wireshark (0.99.6rel-3) unstable; urgency=low
+
+  * debian/rules: added check for wireshark-dev headers (closes: #436247)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 24 Aug 2007 14:19:01 +0000
+
+wireshark (0.99.6rel-2) unstable; urgency=low
+
+  * debian/rules: added -02 -g CFLAGS (closes: #439298)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 24 Aug 2007 07:48:08 +0000
+
+wireshark (0.99.6rel-1) unstable; urgency=low
+
+  * New upstream release.
+    * named 0.99.6rel to be greater than 0.99.6pre
+  * added epan/ subdirectories to dev header files (closes: #436247)
+    * I still need someone to provide me with test code so an extension can
+      actually be built and tested at build time.
+  * debian/rules: added --enable-warnings-as-errors=no to configure flags
+  * debian/patches/15_sensitive_open.dpatch: new patch to allow keyboard
+    selection of capture file in open dialog (closes: #439198)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 23 Aug 2007 09:13:00 +0000
+
+wireshark (0.99.6pre1-1) unstable; urgency=high
+
+  * New upstream pre-release, with security fixes:
+    * could crash when dissecting an HTTP chunked response
+    * could crash while reading iSeries capture files
+    * could exhaust system memory while reading a malformed DCP ETSI packet
+    * could loop excessively while reading a malformed SSL packet
+    * DHCP/BOOTP dissector was susceptible to an off-by-one error
+    * could loop excessively while reading a malformed MMS packet
+  * debian/control: added libkrb5-dev to build-deps so Kerberos support is
+    built.
+  * debian/control: replaced {Source-Version} with appropriate {binary:Version}
+  * debian/wireshark-dev.header-files: use wildcards to get all headers
+    (closes: #423000)
+  * debian/patches/14_disable-cmip.dpatch: disable CMIP dissector which
+    doesn't build at the moment.
+  * debian/rules: don't ignore all errors on make distclean
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 25 Jun 2007 13:33:43 +0200
+
+wireshark (0.99.5-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/patches/09_idl2wrs.dpatch: updated to patch idl2wrs.sh.in.
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 01 Apr 2007 08:58:40 +0000
+
+wireshark (0.99.4-5) unstable; urgency=high
+
+  * debian/patches/00list: really include backported security fixes, stupid me.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 26 Feb 2007 09:30:29 +0000
+
+wireshark (0.99.4-4) unstable; urgency=high
+
+  * Backported security fixes from 0.99.5pre1
+    * The TCP dissector could hang or crash while reassembling HTTP packets.
+    * The HTTP dissector could crash.
+    * On some systems, the IEEE 802.11 dissector could crash.
+    * On some systems, the LLT dissector could crash.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 19 Jan 2007 21:49:04 +0100
+
+wireshark (0.99.4-3) unstable; urgency=low
+
+  * debian/control: added build dependency on libportaudio-dev so sniffed voip
+    G.711 calls are listenable. (closes: #398673)
+  * debian/patches/08_wireshark-desktop-menu.dpatch: removed extraneous .rej
+    file from patch.
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 19 Nov 2006 16:39:26 +0000
+
+wireshark (0.99.4-2) unstable; urgency=low
+
+  * debian/wireshark-dev.files: added more headers, so that dissectors for 
+    DCE/RPC interfaces can be build externally. (closes: #397292)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  6 Nov 2006 12:48:20 +0100
+
+wireshark (0.99.4-1) unstable; urgency=high
+
+  * Backported security patches from yet unreleased 0.99.4 (closes: #396258)
+    * http://www.wireshark.org/security/wnpa-sec-2006-03.html has details
+    * HTTP dissector could crash (CVE-2006-5468)
+    * LDAP dissector (and others) could crash (CVE-2006-5740)
+    * XOT dissector could attempt to allocate a large amount of memory and
+      crash (CVE-2006-4805)
+    * WBXML dissector could crash (CVE-2006-5469)
+    * MIME Multipart dissectar was susceptible to an off-by-one error
+      (CVE-2006-4574)
+    * Parsing a WEP key could cause a crash
+  * debian/control: disabled libcap-dev for kfreebsd and hurd
+    (closes: #375022)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed,  1 Nov 2006 10:05:05 +0100
+
+wireshark (0.99.3a-2) unstable; urgency=low
+
+  * debian/ethereal-common.NEWS: added a note about ethereal -> wireshark name
+    change.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 12 Oct 2006 15:42:48 +0200
+
+wireshark (0.99.3a-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/patches/11_iscsi_dissector.dpatch, 12_ipsec_dissector.dpatch,
+    13_q2931_security_fix.dpatch: security patches that were backported.
+  * debian/patches/11_typo_packet-dap: fixed a typo s/diwsect/dissect/
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 18 Sep 2006 18:56:12 +0200
+
+wireshark (0.99.2-6) unstable; urgency=low
+
+  * Acknowledge NMU, thank Steinar.
+  * debian/wireshark-dev.postinst: removed rests of old Python module
+    compilation, it is not needed by new policy.  (closes: #385357)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed,  6 Sep 2006 23:34:36 +0200
+
+wireshark (0.99.2-5.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Backport security fixes from 0.99.3a (via Subversion); fixes
+    CVE-2006-4331, CVE-2006-4333 (CVE-2006-4330 was fixed in last upload,
+    and CVE-2006-4332 is not relevant for Debian). (Closes: #384529)
+
+ -- Steinar H. Gunderson <sesse@debian.org>  Tue,  5 Sep 2006 02:15:53 +0200
+
+wireshark (0.99.2-5) unstable; urgency=low
+
+  * debian/patches/11_iscsi_dissector.dpatch: new patch, fixing bug reported
+    against iSCSI dissector, taken from upstream (r18832) (closes: #381860)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  7 Aug 2006 16:59:50 +0200
+
+wireshark (0.99.2-4) unstable; urgency=low
+
+  * debian/control: set ethereal-dev section to devel, it was lost in copy
+    pasting.
+  * debian/control, debian/rules, debian/pyversions: updated to new Python
+    policy. (closes: #380986)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue,  1 Aug 2006 13:05:21 +0200
+
+wireshark (0.99.2-3) unstable; urgency=low
+
+  * debian/control: added dummy transitional packages to provide an upgrade
+    path from ethereal.  (closes: #380647)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 31 Jul 2006 18:21:27 +0200
+
+wireshark (0.99.2-2) unstable; urgency=low
+
+  * debian/rules: set --datadir so that DATAFILE_DIR is correct (it was
+    wrongly set to "${prefix}/share/wireshark" and not expanded.
+    * AUTHORS-SHORT is now displayed correclty in about dialog
+    * colofilters is now found and used properly
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 26 Jul 2006 13:27:54 +0200
+
+wireshark (0.99.2-1) unstable; urgency=high
+
+  * New upstream release. (closes: #378745)
+    * The project changed name, ethereal is now wireshark. (closes: #351941)
+      See http://www.wireshark.org/news/20060607.html
+      * tethereal has been renamed to tshark
+      * idl2eth has been renamed to idl2wrs
+    * Urgency high since it fixes security issues
+      * http://www.wireshark.org/security/wnpa-sec-2006-01.html has details
+      * crash in GSM BSSMAP dissector (CVE-2006-3627)
+      * format string overflow in ANSI MAP dissector (CVE-2006-3628)
+      * format string overflow in Checkpoint FW-1 dissector (CVE-2006-3628)
+      * format string overflow in MQ dissector (CVE-2006-3628)
+      * format string overflow in XML dissector (CVE-2006-3628)
+      * large memory allocation in MOUNT dissector (CVE-2006-3629)
+      * off-by-one errors in NCP NMAS and NDPS dissectors (CVE-2006-3630)
+      * format string overflow in NTP dissector (CVE-2006-3628)
+      * infinite loop in SSH dissector (CVE-2006-3631)
+      * buffer overflow in NFS dissector (CVE-2006-3632)
+  * debian/wireshark-dev.header-files: includes missing files
+    (closes: #376522, #368860)
+  * debian/copyright: list source files that are under a license different
+    than Wireshark.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 24 Jul 2006 19:29:26 +0200
+
+ethereal (0.99.0-1) unstable; urgency=high
+
+  * New upstream release (urgency high since it fixes security issues;
+    see http://www.ethereal.com/appnotes/enpa-sa-00023.html advisory)
+    * crash in H.248 dissector (CVE-2006-1937)
+    * infinite loop in UMA dissector (CVE-2006-1933)
+    * crash in X.509if dissector (CVE-2006-1937)
+    * crash in SRVLOC dissector (CVE-2006-1937)
+    * crash in H.245 dissector (CVE-2006-1937)
+    * off-by-one error in OID printing routine (CVE-2006-1932)
+    * buffer overflow in COPS dissector (CVE-2006-1935)
+    * buffer overflow in ALCAP dissector (CVE-2006-1934)
+    * crash in statistics counter (CVE-2006-1937)
+    * crash with malformed capture (CVE-2006-1938)
+    * crash with invalid display filter (CVE-2006-1939)
+    * crash in general packet dissector (CVE-2006-1937)
+    * crash in AIM dissector (CVE-2006-1937)
+    * crash in RPC dissector (CVE-2006-1939)
+    * crash in DCERPC dissector (CVE-2006-1939)
+    * crash in ASN.1 dissector (CVE-2006-1939)
+    * crash in SMB PIPE dissector (CVE-2006-1938)
+    * excessive loop in BER dissector (CVE-2006-1933)
+    * abort in SNDCP dissector (CVE-2006-1940)
+    * buffer overrun in Network Instruments file code (CVE-2006-1934)
+    * buffer overrun in NetXray/Windows Sniffer file code (CVE-2006-1934)
+    * crash in GSM SMS dissector (CVE-2006-1939)
+    * buffer overrun in ALCAP dissector (CVE-2006-1934)
+    * buffer overrun in telnet dissector (CVE-2006-1936)
+    * crash in ASN.1 based dissectors (CVE-2006-1939)
+    * crash in DCERPC NT dissector (CVE-2006-1939)
+    * crash in PER dissector (CVE-2006-1939)
+  * debian/patches/04_drop-capabilities.dpatch: updated.
+  * debian/control: added build-depends on libgnutls-dev since libgnutls can
+    now be used for SSL support.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  1 May 2006 14:50:42 +0200
+
+ethereal (0.10.14-2) unstable; urgency=low
+
+  * debian/watch: added watch file.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  6 Mar 2006 00:03:13 +0100
+
+ethereal (0.10.14-1) unstable; urgency=low
+
+  * New upstream release.
+  * Acknowledge NMU, thanks for the support while I was away.
+  * debian/patches/11-security-CVE-2005-3651.dpatch: removed since included
+    upstream.
+  * debian/patches/07_gcc4.dpatch: removed part about packet-cms since it now
+    causes the build to fail.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 23 Feb 2006 11:04:11 +0100
+
+ethereal (0.10.13-1.3) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Build-conflict with libsnmp-dev, not just libsnmp5-dev, to prevent
+    accidental linkage with openssl.  Closes: #353613.
+
+ -- Steve Langasek <vorlon@debian.org>  Sun, 19 Feb 2006 18:03:20 -0800
+
+ethereal (0.10.13-1.2) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * High-urgency upload for RC bugfix.
+  * Add missing epan/gnuc_format_check.h, epan/ipv6-utils.h headers to
+    ethereal-dev.  Closes: #344011.
+  * Build-depend on automake1.9 instead of automake; the latter points to
+    the ancient automake1.4 package, which was not what's used upstream.
+
+ -- Steve Langasek <vorlon@debian.org>  Fri, 17 Feb 2006 17:47:37 -0800
+
+ethereal (0.10.13-1.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Fix buffer overflow in OSPF dissector (CVE-2005-3651)
+
+ -- Moritz Muehlenhoff <jmm@debian.org>  Sun, 25 Dec 2005 11:15:28 +0100
+
+ethereal (0.10.13-1) unstable; urgency=high
+
+  * New upstream release (urgency high since it fixes security issues;
+    see http://www.ethereal.com/appnotes/enpa-sa-00021.html advisory)
+    * memory exhaustion by ISAKMP, FC-FCS, RSVP, ISIS LSP dissectors
+      (CAN-2005-3241)
+    * crash in IrDA dissector and SMB transaction payload reassembly
+      (CAN-2005-3242)
+    * buffer overflow in AgentX and SLIMP3 dissectors (CAN-2005-3243)
+    * infinite loop in BER dissector (CAN-2005-3244)
+    * memory exhaustion by ONC RPC dissector with option "Dissect unknown RPC
+      program numbers" (CAN-2005-3245)
+    * NULL pointer in sFlow, RTnet, SCSI dissectors (CAN-2005-3246)
+    * infinite loop and crash in SigComp UDVM (CAN-2005-3247)
+    * division by zero in X11 dissector (CAN-2005-3248)
+    * invalid pointer freed in WSP dissecto (CAN-2005-3249)
+    * buffer overflow in SRVLOC dissector (CAN-2005-3184)
+  * debian/patches/04_drop-capabilities.dpatch: updated
+  * debian/patches/08_ethereal-desktop-menu.dpatch: updated
+  * debian/patches/09_idl2eth.dpatch: updated
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  8 Dec 2005 14:18:07 +0100
+
+ethereal (0.10.12-6) unstable; urgency=low
+
+  * Rebuilt with gtk/atk from unstable. (closes: #329889)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 24 Sep 2005 11:11:40 +0200
+
+ethereal (0.10.12-5) unstable; urgency=low
+
+  * debian/ethereal-dev.header-files: added missing epan/range.h
+    (closes: #306426)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 23 Sep 2005 18:28:04 +0200
+
+ethereal (0.10.12-4) unstable; urgency=low
+
+  * debian/control: upgraded automake dependency of ethereal-dev to 1.8.
+  * debian/patches/11_diameter_vendors.dpatch: removed, wrong.
+  * debian/ethereal-common.files: add capinfos.
+  * debian/ethereal-common.manpages: add capinfos man page.
+  * debian/changelog: fixed 0.6.3-2 header line since lintian now complains
+    about the old way of closing bugs from changelogs.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 12 Aug 2005 00:43:39 +0200
+
+ethereal (0.10.12-3) unstable; urgency=low
+
+  * debian/patches/04_drop-capabilities.dpatch: don't exit on failure, simply
+    skip the capabilities part; use g_warning to output messages.
+    (closes: #321204)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  4 Aug 2005 09:41:24 +0200
+
+ethereal (0.10.12-2) unstable; urgency=low
+
+  * debian/patches/04_drop-capabilities.dpatch: preserves CAP_DAC_READ_SEARCH
+    which seems necessary for sudo usage (closes: #320453)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 31 Jul 2005 12:56:50 +0200
+
+ethereal (0.10.12-1) unstable; urgency=high
+
+  * New upstream release; urgency high since it fixes security issues in many
+    dissectors; see http://www.ethereal.com/appnotes/enpa-sa-00020.html
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 27 Jul 2005 09:57:17 +0200
+
+ethereal (0.10.11-5) unstable; urgency=low
+
+  * debian/patches/11_diameter_vendors.dpatch: correctly add diameter vendors
+    (patch by Joost Yervante Damad) (closes: #316082)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 18 Jul 2005 20:18:43 +0200
+
+ethereal (0.10.11-4) unstable; urgency=low
+
+  * debian/: now using dpatch, started from Ubuntu patch, merged with current
+    package patches.
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 17 Jul 2005 18:58:05 +0200
+
+ethereal (0.10.11-3) unstable; urgency=low
+
+  * Modified capabilities patch so it doesn't try to keep CAP_NET_RAW if it
+    doesn't have it. (closes: #318689)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 17 Jul 2005 10:29:31 +0200
+
+ethereal (0.10.11-2) unstable; urgency=low
+
+  * Use capabilities to mitigate security risk, patch from J.H.M. Dassen (Ray)
+    (closes: #315670)
+  * debian/control: build-depends on libcap-dev
+  * epan/dissectors/packet-cmip.c: fixed dissect_cmip_InvokeIDType declaration
+    mismatch.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 16 Jul 2005 10:58:03 +0200
+
+ethereal (0.10.11-1) unstable; urgency=high
+
+  * New upstream release; urgency high since it fixes security issues in the
+    following dissectors:
+    * format string vulnerabilities: ANSI A, DHCP
+    * segmentation faults: GSM MAP, AIM, TZSP, Bittorrent, SMB, GSM, SMB
+      NETLOGON
+    * buffer overflows: DISTCC, FCELS, SIP, ISIS, CMIP, CMP, CMS, CRMF, ESS,
+      OCSP, PKIX1Explitit, PKIX Qualified, X.509, NCP, ISUP, TCAP,
+      Presentation
+    * null pointer exception: KINK, WSP, SMB Mailslot, H.245, MGCP, RPC
+    * infinite loops: LMP, EIGRP, MEGACO, L2TP
+    * uncaught assertions: Telnet, 802.3, BER, IAX2, RADIUS, SMB PIPE, MRDISC
+    * memory exhaustion: DICOM
+    * unclassified: Fibre Channel, LDAP, NTLMSSP
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  5 May 2005 08:43:00 +0200
+
+ethereal (0.10.10-2) unstable; urgency=high
+
+  * Several security fixes from upstream subversion tree for the following
+    dissectors:
+    * DLSw (infinite loop)
+    * ICEP (double free)
+    * NDPS (memory exhaustion)
+    * Q931 (buffer overflow)
+    * RSVP (infinite loop) (CAN-2005-1281)
+    * SRVLOC (infinite loop)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 25 Apr 2005 15:30:55 +0200
+
+ethereal (0.10.10-1) unstable; urgency=high
+
+  * New upstream release; urgency high since it fixes security issues.
+    * Fixes buffer overflow in Etheric dissector. (CAN-2005-0704)
+    * Fixes crash in GPRS-LLC dissector. (CAN-2005-0705)
+    * Fixes buffer overflow in 3G-A11 dissector. (CAN-2005-0699)
+      (was already fixed in Debian package)
+  * debian/ethereal-dev.header-files: some files moved to epan/
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 14 Mar 2005 10:16:03 +0100
+
+ethereal (0.10.9-2) unstable; urgency=high
+
+  * Backported packet-3g-a11.c from upstream subversion trunk.
+    (fixes buffer overflows in 3G-A11 dissector)
+    (CAN-2005-0699 (under review)) (closes: #298771)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 10 Mar 2005 10:25:08 +0100
+
+ethereal (0.10.9-1) unstable; urgency=high
+
+  * New upstream release; urgency high since it fixes security issues.
+    * Fixes infinite loop in COPS dissector. (CAN-2005-0006)
+    * Fixes assertion in DLSw dissector. (CAN-2005-0007)
+    * Fixes memory corruption in DNP dissector. (CAN-2005-0008)
+    * Fixes assertion in Gnutella dissector. (CAN-2005-0009)
+    * Fixes memory corruption in MMSE dissector. (CAN-2005-0010)
+    * Fixes buffer overflow in X11 dissector. (CAN-2005-0084)
+  * asn2deb and idl2deb manpages relicensed by W. Borgert from GFDL to GPL
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 20 Jan 2005 23:03:19 +0100
+
+ethereal (0.10.8-4) unstable; urgency=low
+
+  * Updated libtool version in wiretap/ directory. (closes: #289962)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 12 Jan 2005 10:14:41 +0100
+
+ethereal (0.10.8-3) unstable; urgency=low
+
+  * Fixed dissect_cmip_InvokeIDType declaration (FTBFS with gcc-4.0)
+    (closes: #288990)
+  * epan/dissectors/packet-giop.c: fixed segfault with some GIOP packets
+    (closes: #288746)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri,  7 Jan 2005 14:43:03 +0100
+
+ethereal (0.10.8-2) unstable; urgency=low
+
+  * Restored lost patch to idl2eth; sorry. (closes: #288740)
+  * ethereal_gen.py: fixed some includes.
+  * epan/prefs.c: Use sensible-brower as default browser.
+  * debian/control: build-depends on libpcap0.8-dev.
+  * debian/control: lower-case first letter of descriptions.
+
+ -- Frederic Peters <fpeters@debian.org>  Wed,  5 Jan 2005 14:34:57 +0100
+
+ethereal (0.10.8-1) unstable; urgency=high
+
+  * New upstream release.
+    * Now parses Auth option in DHCPv6 (closes: #283534)
+    * Urgency high since it fixes security issues with DICOM, RTP, HTTP
+      and SMB <http://www.ethereal.com/appnotes/enpa-sa-00016.html>
+      (CAN-2004-1139, CAN-2004-1140, CAN-2004-1141 and CAN-2004-1142)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 15 Dec 2004 22:13:41 +0100
+
+ethereal (0.10.7-3) unstable; urgency=low
+
+  * epan/prefs.c: changed default font to "monospace 10" (closes: #232408)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 19 Nov 2004 18:31:22 +0100
+
+ethereal (0.10.7-2) unstable; urgency=low
+
+  * plugins/opsi/packet-opsi.c: backported resource exhaustion fix
+    (closes: #280556)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 18 Nov 2004 21:50:28 +0100
+
+ethereal (0.10.7-1) unstable; urgency=low
+
+  * New upstream release. (closes: #277923)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  1 Nov 2004 14:11:35 +0100
+
+ethereal (0.10.6-4) unstable; urgency=low
+
+  * Build in clean chroot; stupid me.  (closes: #276560)
+  * debian/rules: remove config.log on clean.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 15 Oct 2004 00:12:58 +0200
+
+ethereal (0.10.6-3) unstable; urgency=medium
+
+  * Upgrades libtool (closes: #276515)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 14 Oct 2004 18:40:03 +0200
+
+ethereal (0.10.6-2) unstable; urgency=medium
+
+  * debian/ethereal-dev.header-files: added missing header files
+    (closes: #270581)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed,  8 Sep 2004 10:34:12 +0200
+
+ethereal (0.10.6-1) unstable; urgency=high
+
+  * New upstream realease.
+    * Gtk-Critical messages are fixed (closes: #260341, #263118)
+  * debian/rules: run libtoolize to fix sonames; fix a FTBFS bug
+    (closes: #265379)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 15 Aug 2004 11:58:03 +0200
+
+ethereal (0.10.5-4) unstable; urgency=low
+
+  * link libethereal.so to libadns and libm (closes: #262015)
+    (since this is a private shared library I don't think it was required)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 29 Jul 2004 15:41:02 +0200
+
+ethereal (0.10.5-3) unstable; urgency=low
+
+  * debian/ethereal-dev.header-files: install packet-rpc.h, crc16.h and crc32.h
+    (closes: #259375)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 14 Jul 2004 12:50:34 +0200
+
+ethereal (0.10.5-2) unstable; urgency=low
+
+  * Compile and install plugins (closes: #259199)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 13 Jul 2004 13:40:41 +0000
+
+ethereal (0.10.5-1) unstable; urgency=low
+
+  * New upstream release with security fixes.
+    + <http://www.ethereal.com/appnotes/enpa-sa-00015.html>
+    + Fixed the crash in protocol hierarchy (closes: #244743)
+    + Ethereal can be configured not to bug you about unsaved captures
+      (closes: #235721)
+  * Updated omniorb URL (closes: #257512)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 13 Jul 2004 10:16:55 +0200
+
+ethereal (0.10.4-3) unstable; urgency=low
+
+  * debian/rules: install libethereal in /usr/lib/ethereal, not /usr/lib/
+  * debian/ethereal-dev.header-files: added packet-ber.h
+  * idl2deb: ETH_VER_IMPORT and non-versioned autotools (closes: #255570)
+  * debian/control: updated depends to libpcap0.7-dev, no more libpcap-dev
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 22 Jun 2004 09:02:39 +0200
+
+ethereal (0.10.4-2) unstable; urgency=low
+
+  * Rebuilt against GTK+ 2.4; now in unstable.
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 25 May 2004 22:28:37 +0200
+
+ethereal (0.10.4-1) unstable; urgency=high
+
+  * New upstream release with security fixes.
+    <http://www.ethereal.com/appnotes/enpa-sa-00014.html>
+  * (sorry about the delay; I was away and forgot about this release)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 16 May 2004 00:02:53 +0200
+
+ethereal (0.10.3-3) unstable; urgency=low
+
+  * debian/control: removed dependency on gksu; moved to recommends
+  * debian/EtherealAsRoot.desktop: added TryExec=gksu so that the menu is
+    only shown when gksu is installed
+  * debian/ethereal.menu: removed entry for "ethereal as root" since
+    """running ethereal itself requires some wits, and user possesing
+    such skills would be able to launch it from xterm."""
+  * "Our Priorities are Our Users (...)", but ignore them if they ask
+    about gksu support; it's against the holy Debian Policy Manual and
+    a """300kB dependency *is* a big dependency""".
+  * This closes the bug and everybody is happy (closes: #240682)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 10 Apr 2004 21:16:30 +0200
+
+ethereal (0.10.3-2) unstable; urgency=high
+
+  * Acknowledge NMU. (sorry)  (urgency high, security fixes)
+  * debian/control: added Build-Conflicts on libsnmp-dev
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 28 Mar 2004 23:14:51 +0200
+
+ethereal (0.10.3-1.0.1) unstable; urgency=low
+
+  * Recompile-only NMU.
+  * i386 package was uploaded with dependencies on GNOME libs from
+    experimental; rebuild using only dependencies from unstable.
+
+ -- Steve Langasek <vorlon@debian.org>  Sat, 27 Mar 2004 21:27:01 -0600
+
+ethereal (0.10.3-1) unstable; urgency=high
+
+  * New upstream release with security fixes. (hence urgency high)
+    http://www.ethereal.com/appnotes/enpa-sa-00013.html
+  * debian/rules: remove upstream debian/menu on build
+  * debian/control: added dependency on gksu
+  * debian/menu: added an entry to start ethereal with gksu
+    (closes: #71994)
+  * added another .desktop entry to start ethereal with gksu from Gnome menu
+  * Upstream changes; libethereal and libwiretap handled differently; they may
+    end up in new packages (but go in ethereal-common for now)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 27 Mar 2004 14:09:49 +0100
+
+ethereal (0.10.2-2) unstable; urgency=low
+
+  * New files in ethereal-dev (closes: #236702)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun,  7 Mar 2004 21:43:17 +0100
+
+ethereal (0.10.2-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/control: added libpcre3-dev to Build-Depends
+
+ -- Frederic Peters <fpeters@debian.org>  Fri,  5 Mar 2004 15:56:50 +0100
+
+ethereal (0.10.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Include W. Bogert asn2deb (closes: #233603)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 19 Feb 2004 18:02:08 +0100
+
+ethereal (0.10.0-6) unstable; urgency=low
+
+  * debian/ethereal-common.manpages: added ethereal-filter.4
+    (closes: #230256)
+  * debian/control: updated build-depends on docbook-xsl since docbook.xsl
+    moved.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 29 Jan 2004 18:11:43 +0100
+
+ethereal (0.10.0-5) unstable; urgency=low
+
+  * debian/rules: quotes around CFLAGS. (closes: #228492)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 19 Jan 2004 12:14:02 +0100
+
+ethereal (0.10.0-4) unstable; urgency=low
+
+  * Backported hexdump summary fix from CVS (closes: #226248)
+    http://www.ethereal.com/lists/ethereal-cvs/200312/msg00257.html
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  5 Jan 2004 15:27:06 +0100
+
+ethereal (0.10.0-3) unstable; urgency=low
+
+  * ethereal_gen.py: patched to handle ushort/ulong union discriminators.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 18 Dec 2003 23:27:51 +0100
+
+ethereal (0.10.0-2) unstable; urgency=low
+
+  * debian/ethereal-dev.header-files: added missing header files.
+    (closes: #224246)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 17 Dec 2003 13:24:21 +0100
+
+ethereal (0.10.0-1) unstable; urgency=low
+
+  * New upstream release. (closes: #223857)
+    * correct fonts with GTK2. (closes: #197571)
+    * Includes missing help/ directory from CVS.
+  * Acknowledge NMU, thanks Ray.
+    * Security issues. (closes: #219590)
+    * idl2deb permissions. (closes: #211506)
+  * New idl2deb version, thanks. (closes: #213962)
+  * debian/ethereal-dev.header-files: include some missing header files
+    (closes the remaining of #211506)
+  * debian/control: versioned build-depends on debhelper.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 13 Dec 2003 17:11:09 +0100
+
+ethereal (0.9.16-0.1) unstable; urgency=high
+
+  * NMU.
+  * New upstream release (addresses #219590 for sid).
+    Fixes potential security issues with several dissectors:
+    * GTP (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0925)
+    * ISAKMP and MEGACO
+      (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0926)
+    * SOCKS (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0927)
+    The upstream security advisory is enpa-sa-00011, available at
+    http://www.ethereal.com/appnotes/enpa-sa-00011.html
+  * [debian/rules]
+    * Don't remove doc/ethereal.pod and doc/tethereal.pod so the package
+      builds with pbuilder.
+    * Install idl2deb with execute permissions.
+
+ -- J.H.M. Dassen (Ray) <jdassen@debian.org>  Mon, 10 Nov 2003 12:11:55 +0100
+
+ethereal (0.9.15-1) unstable; urgency=low
+
+  * New upstream release. (closes: #210272)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 10 Sep 2003 16:13:17 +0200
+
+ethereal (0.9.14-5) unstable; urgency=low
+
+  * debian/control: versioned build-depends on docbook-xsl (closes: #208734)
+  * debian/rules: compiles with -mieee on alpha
+
+ -- Frederic Peters <fpeters@debian.org>  Sun,  7 Sep 2003 09:57:25 +0200
+
+ethereal (0.9.14-4) unstable; urgency=low
+
+  * debian/rules: install .desktop and images for menu.
+    (closes: #207271)
+  * debian/control: updated policy to 3.6.1.0 (no changes needed)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 30 Aug 2003 23:27:00 +0200
+
+ethereal (0.9.14-3) unstable; urgency=low
+
+  * Add manpage for idl2deb
+  * Include missing header files. (closes: #197181)
+    - from same bug: remove dependency of ethereal-dev against ethereal-common
+    - from same bug: added dependency to libglib2.0-dev
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 19 Aug 2003 11:55:27 +0200
+
+ethereal (0.9.14-2) unstable; urgency=low
+
+  * Built for Python 2.3 since omniidl4 has been updated quickly.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 14 Aug 2003 10:19:18 +0200
+
+ethereal (0.9.14-1) unstable; urgency=low
+
+  * The "I'm so happy to be alive I'll fix plenty of bugs" release
+  * New upstream release. (closes: #204345)
+  * Include W. Bogert idl2deb script
+  * debian/control: depends on current versions of omniidl or omniidl4 since
+    they only exist for Python 2.2 and I don't want ethereal-dev to break when
+    they will switch to Python 2.3.  I'll then release a new version.
+  * Several UI issues resolved upstream (closes: #199763)
+  * ethereal can now decode Jabber protocol (closes: #133099)
+  * debian/control: build-depends on libadns1-dev so that it now use the GNU
+    ADNS library for name resolution (closes: #197505)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 13 Aug 2003 00:06:27 +0200
+
+ethereal (0.9.13-1) unstable; urgency=low
+
+  * New upstream release.  Fixing several security issues.
+    (closes: #197107)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 12 Jun 2003 10:00:57 +0200
+
+ethereal (0.9.12-3) unstable; urgency=low
+
+  * Rebuilt with new libpcap. (closes: #196831)
+  * Built with GTK+ 2.2 (instead of GTK+ 1.2). (closes: #193450)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 11 Jun 2003 17:45:07 +0200
+
+ethereal (0.9.12-2) unstable; urgency=low
+
+  * Forgot to update version-depends and it didn't use ${source-version}.
+    Fixed. (closes: #192213)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed,  7 May 2003 01:16:45 +0200
+
+ethereal (0.9.12-1) unstable; urgency=high
+
+  * New upstream release.  Fixing several security issues.
+    (closes: #192107)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue,  6 May 2003 22:03:10 +0200
+
+ethereal (0.9.9-2) unstable; urgency=low
+
+  * Updated config.guess and config.sub to work on mips and mipsel
+    architectures (manually then through the patch provided by
+    Martin Godisch). (closes: #178701)
+  * Update to packet-socks.c
+  * debian/control: ethereal-dev now depends upon omniidl | omniidl4
+    (closes: #182620)
+  * idl2eth no longer needs PYTHONPATH to be set explicitely.
+    (closes: #182621)
+  * debian/ethereal-dev.header-files: included config.h and reassemble.h since
+    they seem necessary. (closes: #183625)
+  * Thanks to W. Borgert for bug reporting.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri,  7 Mar 2003 22:52:27 +0000
+
+ethereal (0.9.9-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/control: Tightened ethereal-common dependencies.
+    (closes: #172861, #176236, #178027)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 24 Jan 2003 14:38:53 +0100
+
+ethereal (0.9.8-3) unstable; urgency=low
+
+  * debian/control: added versioned dependency between (t)ethereal and
+    ethereal-common to get the plug-ins. (closes: #172861)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 13 Dec 2002 10:39:27 +0100
+
+ethereal (0.9.8-2) unstable; urgency=low
+
+  * Updated config.sub and config.guess with the ones from autotools-dev
+    (closes: #172407)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 10 Dec 2002 09:52:45 +0100
+
+ethereal (0.9.8-1) unstable; urgency=low
+
+  * New upstream release.
+  * This added (some) support for counting IPv6 packets during capture.
+    (closes: #164472)
+  * 0.9.7 fixed the LMP dissector. (closes: #163513)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  9 Dec 2002 10:00:51 +0100
+
+ethereal (0.9.7-2) unstable; urgency=low
+
+  * debian/control: added libgtk2.0-dev to build depends.
+  * debian/control: removed libsnmp-dev from build depends (ethereal is
+    compiled without SNMP support since it would link against libssl)
+    (the build-dep caused failure to build on architectures where perl 5.8
+    wasn't ready (dependency on libsnmp-perl))
+  * debian/control: added python, automake and autoconf to build depends.
+  * debian/rules: creating aclocal-missing directory on build.
+      (those bugs closes: #163443) (patch by LaMont Jones)
+  * debian/rules: install Python files to 2.2 directory, not 2.1
+  * debian/ethereal-dev.postinst: fixed Python version (closes: #163153)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  7 Oct 2002 15:06:06 +0200
+
+ethereal (0.9.7-1) unstable; urgency=low
+
+  * New upstream release. (closes: #162972)
+  * debian/copyright: include upstream author name. (closes: #151015)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue,  1 Oct 2002 16:20:45 +0200
+
+ethereal (0.9.6-2) unstable; urgency=low
+
+  * debian/control: changed Python dep to >= 2.2 and << 2.3 since 2.2 is now
+    the default version in sid.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 14 Sep 2002 23:29:23 +0200
+
+ethereal (0.9.6-1) unstable; urgency=low
+
+  * New upstream release.
+  * Fixes security issue in the ISIS protocol dissector (susceptible to
+    buffer overflow).
+     (see http://www.ethereal.com/appnotes/enpa-sa-00006.html)
+  * Add missing header files (packet-tcp.h and packet-tpkt.h) to ethereal-dev
+    (closes: #158808)
+  * Add default PYTHONPATH to idl2eth (closes: #158909)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  2 Sep 2002 10:13:06 +0200
+
+ethereal (0.9.5-3) unstable; urgency=low
+
+  * Rebuilt with new libpcap0.7. (closes: #156206)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 10 Aug 2002 19:25:29 +0200
+
+ethereal (0.9.5-2) unstable; urgency=low
+
+  * Do not run libtoolize since it creates a bogus libtool file.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  8 Jul 2002 16:07:00 +0200
+
+ethereal (0.9.5-1) unstable; urgency=low
+
+  * New upstream release.
+  * Fixes several security issues.
+    (http://www.ethereal.com/appnotes/enpa-sa-00005.html)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 29 Jun 2002 19:13:30 +0200
+
+ethereal (0.9.4-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Fixes four security issues. (closes: #147595)
+    (http://www.ethereal.com/appnotes/enpa-sa-00004.html)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 20 May 2002 01:10:21 +0200
+
+ethereal (0.9.3-1) unstable; urgency=medium
+
+  * New upstream release
+  * Fixes ASN.1 zero-length g_malloc that could lead to security problems.
+    (see http://www.ethereal.com/appnotes/enpa-sa-00003.html)
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 31 Mar 2002 21:45:11 +0200
+
+ethereal (0.9.2-3) unstable; urgency=low
+
+  * debian/rules: fixed typo that could have caused snmp not to be built.
+    (closes: #140147) This would happen if 1) built from the CVS tree and 2)
+    built on a system without libsnmp-dev ("impossible" since we build-depend
+    on it). Anyway it is fixed for correctness.
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 27 Mar 2002 14:00:31 +0100
+
+ethereal (0.9.2-2) unstable; urgency=low
+
+  * Added libwiretap.a to ethereal-dev (closes: #137971)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 12 Mar 2002 11:59:04 +0100
+
+ethereal (0.9.2-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Tue,  5 Mar 2002 10:30:24 +0100
+
+ethereal (0.9.1-8) unstable; urgency=low
+
+  * debian/control: changed ethereal-dev section to devel.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 25 Feb 2002 14:50:49 +0100
+
+ethereal (0.9.1-7) unstable; urgency=low
+
+  * debian/control: changed ethereal-dev Depends line to use omniidl-python
+    and no omniorb.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 25 Feb 2002 13:47:42 +0100
+
+ethereal (0.9.1-6) unstable; urgency=low
+
+  * debian/control: fix Depends line for ethereal-dev (added libpcap-dev)
+  * idl2eth: added PYTHONPATH so that it runs.
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 18 Feb 2002 11:48:01 +0100
+
+ethereal (0.9.1-5) unstable; urgency=low
+
+  * debian/rules: added --disable-ssl so that ethereal is not built with
+    ssl support and may be uploaded to main. (closes: #134273)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 18 Feb 2002 09:33:30 +0100
+
+ethereal (0.9.1-4) unstable; urgency=low
+
+  * debian/rules: added forgotten header files to ethereal-dev.
+    (really closes: #105916)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 15 Feb 2002 10:12:15 +0100
+
+ethereal (0.9.1-3) unstable; urgency=low
+
+  * debian/rules: after the quick and dirty repackaging of 0.9.1-1 this one
+    should be much better: 4 packages: ethereal-common, ethereal, tethereal
+    and etherel-dev (last three depending on ethereal-common).
+    This should address Christian Kurz remarks.
+    	(closes: #133798, #133796, #133806)
+    This should also please W. Borgert. (closes: #105916)
+
+ -- Frederic Peters <fpeters@debian.org>  Wed, 13 Feb 2002 20:36:12 +0100
+
+ethereal (0.9.1-2) unstable; urgency=low
+
+  * debian/control: fixed typo in tethereal description (closes: #133019)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri,  8 Feb 2002 23:55:49 +0100
+
+ethereal (0.9.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Fixed protocol hierarchy display (closes: #131676)
+  * It is possible to see TOS fields instead of DS fields in IP header.
+    (option in preferences dialog) (closes: #121046)
+  * debian/rules: totally revamped build process: create an additional
+    tethereal package that doesn't depend on GTK+ (closes: #103488)
+    It is not yet perfect but I'm working on it...
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 28 Jan 2002 18:25:25 +0100
+
+ethereal (0.9.0-1) unstable; urgency=low
+
+  * New upstream release.
+  * Upstream fixed SNMP bugs (closes: #114361, #119580)
+  * Upstream fixed Sender->Receiver bug (closes: #112327)
+  * debian/copyright: fixed 'license' spelling.
+  * debian/rules: fixed 'clean' target to remove temporary files.
+  * debian/rules: moved $sysconfdir to /usr/share/ethereal since $sysconfdir
+    is not used here to store config files. (closes: #127638)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  3 Jan 2002 19:43:18 +0100
+
+ethereal (0.8.20-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 19 Oct 2001 10:49:35 +0200
+
+ethereal (0.8.19-2) unstable; urgency=low
+
+  * debian/rules: added call to libtoolize so that it compiles on hppa.
+    (closes: #108662)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon, 17 Sep 2001 14:23:34 +0200
+
+ethereal (0.8.19-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/control: improved description of package. (closes: #104744)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 14 Jul 2001 11:57:12 +0200
+
+ethereal (0.8.17-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 13 Apr 2001 13:33:35 +0200
+
+ethereal (0.8.16-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  8 Mar 2001 09:07:34 +0100
+
+ethereal (0.8.15-2) unstable; urgency=low
+
+  * Rebuilt against libsnmp4.2 (closes: #83720)
+  * It is possible to not go in promiscuous mode (-p) (actually it was for
+    some time...) (closes: #34376)
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 27 Jan 2001 13:39:05 +0100
+
+ethereal (0.8.15-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 13 Jan 2001 19:36:26 +0100
+
+ethereal (0.8.14-2) unstable; urgency=low
+
+  * Fix for the socks dissector. (closes: #81164)
+    (patch by Jeff Foster <jfoste@woodward.com>)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 11 Jan 2001 00:27:02 +0100
+
+ethereal (0.8.14-1) unstable; urgency=low
+
+  * New upstream release.
+  * Officially fixes the buffer overflow exploit mentioned below (as well
+    as other possible ones)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 21 Nov 2000 22:48:16 +0100
+
+ethereal (0.8.13-3) unstable; urgency=low
+
+  * Fixed possible buffer overflow exploit in packet-afs.c (I could not
+    reproduce it so I don't know if my fix really works, please test it)
+    (exploit is on http://www.hacksware.com)
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 21 Nov 2000 22:47:59 +0100
+
+ethereal (0.8.13-2) unstable; urgency=low
+
+  * Rebuilt against XFree86 4.0 libs (now that I'm allowed to...)
+  * Rebuilt against zlibg1 1.1.13-1 that has a correct shlibs file
+    (closes: #76533, #76552)
+  
+ -- Frederic Peters <fpeters@debian.org>  Fri, 10 Nov 2000 17:39:40 +0100
+
+ethereal (0.8.13-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sun, 29 Oct 2000 23:58:38 +0100
+
+ethereal (0.8.12-1) unstable; urgency=low
+
+  * New upstream release.
+  * Patch for SRVLOC frames has been applied upstrem.
+  
+ -- Frederic Peters <fpeters@debian.org>  Mon, 18 Sep 2000 10:22:27 +0200
+
+ethereal (0.8.11-1) unstable; urgency=low
+
+  * New upstream release.
+  * Applied patch to fix hang on some SRVLOC frames (closes: #68024)
+  
+ -- Frederic Peters <fpeters@debian.org>  Thu, 10 Aug 2000 21:06:52 +0200
+
+ethereal (0.8.10-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added debhelper to Build-depends (closes: #66391)
+  
+ -- Frederic Peters <fpeters@debian.org>  Tue, 11 Jul 2000 22:36:45 +0200
+
+ethereal (0.8.9-2) unstable; urgency=low
+
+  * Updated Build-depends to match libsnmp (closes: #66018) (it's the same
+    entry as for 0.8.7-2; I need some sleep)
+  
+ -- Frederic Peters <fpeters@debian.org>  Thu, 22 Jun 2000 23:59:29 +0200
+
+ethereal (0.8.9-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Tue, 20 Jun 2000 14:17:00 +0200
+
+ethereal (0.8.8-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Wed, 10 May 2000 17:20:36 +0200
+
+ethereal (0.8.7-2) unstable; urgency=low
+
+  * Updated Build-depends to match libsnmp (closes: #63753)
+  
+ -- Frederic Peters <fpeters@debian.org>  Mon,  8 May 2000 19:02:29 +0200
+
+ethereal (0.8.7-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Mon, 17 Apr 2000 18:41:21 +0200
+
+ethereal (0.8.6-1) unstable; urgency=low
+
+  * New upstream release.
+  * Linked against libsnmp4.1 (closes: #62324)
+  
+ -- Frederic Peters <fpeters@debian.org>  Fri, 14 Apr 2000 19:45:53 +0200
+
+ethereal (0.8.4-1) unstable; urgency=low
+
+  * New upstream release.
+  * Applied fix for correct decapsulation of PPP frames (closes: #59663)
+    (patch provided by Thomas Quinot <thomas@cuivre.fr.eu.org>)
+  
+ -- Frederic Peters <fpeters@debian.org>  Sun,  5 Mar 2000 20:04:11 +0100
+
+ethereal (0.8.3-1) unstable; urgency=low
+
+  * New upstream release.
+  * Checked PPTP problems (fix was introduced in 0.8.2) (closes: #55347)
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat,  5 Feb 2000 23:51:26 +0100
+
+ethereal (0.8.2-2) unstable; urgency=low
+
+  * debian/control: fixed Build-Depends line (closes: #56707)
+  
+ -- Frederic Peters <fpeters@debian.org>  Mon, 31 Jan 2000 19:29:21 +0100
+
+ethereal (0.8.2-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat, 29 Jan 2000 01:53:50 +0100
+
+ethereal (0.8.1-2) unstable; urgency=low
+
+  * debian/control: added Build-Depends
+  * debian/control: modified description to match the README file
+  * debian/rules: added --disable-static to ./configure
+  * compiled with SNMP support (through libsnmp)
+  
+ -- Frederic Peters <fpeters@debian.org>  Thu, 20 Jan 2000 18:30:40 +0100
+ 
+ethereal (0.8.1-1) unstable; urgency=low
+
+  * New upstream release.
+  * Fixed duplicate manpage installation. (closes: #55438)
+  
+ -- Frederic Peters <fpeters@debian.org>  Wed, 19 Jan 2000 09:29:56 +0100
+
+ethereal (0.8.0-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat,  1 Jan 2000 23:50:44 +0100
+
+ethereal (0.7.9-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat, 25 Dec 1999 00:55:00 +0100
+
+ethereal (0.7.7-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Fri, 29 Oct 1999 14:09:01 +0200
+
+ethereal (0.7.3-2) unstable; urgency=low
+
+  * Fixed debian/rules to work with the new debhelper that create FHS compliant
+    packages. (Fixes: #44613)
+  
+ -- Frederic Peters <fpeters@debian.org>  Thu,  9 Sep 1999 18:29:12 +0200
+
+ethereal (0.7.3-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sun,  5 Sep 1999 20:06:10 +0200
+
+ethereal (0.7.2-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat, 14 Aug 1999 18:32:28 +0200
+ 
+ethereal (0.7.1-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat,  7 Aug 1999 16:29:03 +0200
+ 
+ethereal (0.6.3-2) unstable; urgency=low
+
+  * Renamed NEWS to changelog since this is the upstream ChangeLog
+    (fixes bug #41908)
+  
+ -- Frederic Peters <fpeters@debian.org>  Tue, 27 Jul 1999 20:19:28 +0200
+
+ethereal (0.6.3-1) unstable; urgency=low
+
+  * New upstream release.
+  * Moved directories to comply with FHS (and Standards 3.0.0)
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat, 24 Jul 1999 00:36:46 +0200
+
+ethereal (0.6.2-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Tue, 25 May 1999 16:47:08 +0200
+
+ethereal (0.6.1-1) unstable; urgency=low
+
+  * New upstream release.
+  
+ -- Frederic Peters <fpeters@debian.org>  Sun,  2 May 1999 23:30:38 +0200
+
+ethereal (0.5.1-3) unstable; urgency=low
+
+  * Fixed package building (Bug#35657 (report and patch from bartw@xs4all.nl)
+  
+ -- Frederic Peters <fpeters@debian.org>  Sat, 10 Apr 1999 19:20:29 +0200
+
+ethereal (0.5.1-2) unstable; urgency=low
+
+  * Compiled against libgtk1.2
+  * Moved /usr/etc/manuf to /etc/manuf (it's now lintian clean)
+
+ -- Frederic Peters <fpeters@debian.org>  Mon,  8 Mar 1999 22:33:04 +0100
+
+ethereal (0.5.1-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat,  9 Jan 1999 16:51:28 +0100
+
+ethereal (0.5.0-2) unstable; urgency=low
+
+  * Fixed package building (Bug#30110)
+
+ -- Frederic Peters <fpeters@debian.org>  Thu,  3 Dec 1998 13:15:53 +0100
+
+ethereal (0.5.0-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 24 Nov 1998 16:04:15 +0100
+
+ethereal (0.4.0-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 17 Oct 1998 17:20:01 +0200
+
+ethereal (0.3.17-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Frederic Peters <fpeters@debian.org>  Tue, 29 Sep 1998 20:01:11 +0200
+
+ethereal (0.3.16-2) unstable; urgency=low
+
+  * New versions aren't just for Alpha people :) (fixes #26914)
+
+ -- Frederic Peters <fpeters@debian.org>  Fri, 25 Sep 1998 17:03:39 +0200
+
+ethereal (0.3.16-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Frederic Peters <fpeters@debian.org>  Sat, 19 Sep 1998 10:55:48 +0200
+
+ethereal (0.3.15-1.1) unstable; urgency=low
+
+  * non-maintainer upload for Alpha
+  * GTK cflags ans library flags were not passed to the compiler.
+
+ -- Paul Slootman <paul@debian.org>  Mon, 21 Sep 1998 22:49:32 +0200
+
+ethereal (0.3.15-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Frederic Peters <fpeters@debian.org>  Sun, 13 Sep 1998 23:05:47 +0200
+
--- wireshark-1.0.2.orig/debian/wireshark-dev.prerm
+++ wireshark-1.0.2/debian/wireshark-dev.prerm
@@ -0,0 +1,15 @@
+#! /bin/bash -e
+#
+# Debian prerm script for Python x.y hierarchical modules
+# Written by Gregor Hoffleit <flight@debian.org>
+# Extended by Matthias Klose <doko@debian.org>
+#
+
+PACKAGE=`basename $0 | sed -e 's/\.[^.]*$//'`
+
+dpkg --listfiles $PACKAGE |
+	awk '$0~/\.py$/ {print $0"c\n" $0"o"}' |
+	xargs rm -f >&2
+
+#DEBHELPER#
+
--- wireshark-1.0.2.orig/debian/watch
+++ wireshark-1.0.2/debian/watch
@@ -0,0 +1,2 @@
+version=3
+http://www.wireshark.org/download/src/all-versions/wireshark-(.*)\.tar\.gz
--- wireshark-1.0.2.orig/debian/pyversions
+++ wireshark-1.0.2/debian/pyversions
@@ -0,0 +1 @@
+2.3-
--- wireshark-1.0.2.orig/debian/wireshark-dev.manpages
+++ wireshark-1.0.2/debian/wireshark-dev.manpages
@@ -0,0 +1,3 @@
+idl2wrs.1
+idl2deb.1
+asn2deb.1
--- wireshark-1.0.2.orig/debian/control
+++ wireshark-1.0.2/debian/control
@@ -0,0 +1,69 @@
+Source: wireshark
+Section: net
+Priority: optional
+Maintainer: Frederic Peters <fpeters@debian.org>
+Uploaders: Joost Yervante Damad <andete@debian.org>
+Standards-Version: 3.8.0.1
+Build-Depends: libgtk2.0-dev (>=2.4.0-0), libpcap0.8-dev, flex, libz-dev, dpatch, debhelper (>= 6), libtool, python, automake1.9, autoconf, autotools-dev, libadns1-dev, xsltproc, docbook-xsl (>= 1.64.1.0-0), libpcre3-dev, libcap2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], bison, libgnutls-dev, python-support (>= 0.3), portaudio19-dev, libkrb5-dev, liblua5.1-0-dev
+Build-Conflicts: libsnmp4.2-dev, libsnmp-dev
+XS-Python-Version: all
+
+Package: wireshark-common
+Architecture: any
+Depends: ${shlibs:Depends}
+Recommends: wireshark (>= ${binary:Version}) | tshark (>= ${binary:Version})
+Replaces: ethereal-common (<< 1.0.0-3)
+Conflicts: ethereal-common (<< 1.0.0-3)
+Description: network traffic analyser (common files)
+ Wireshark is a network traffic analyzer, or "sniffer", for Unix and
+ Unix-like operating systems. A sniffer is a tool used to capture 
+ packets off the wire. Wireshark decodes numerous protocols (too many
+ to list).
+ .
+ This package provides files common to both wireshark (the GTK+ version)
+ and tshark (the console version).
+
+Package: wireshark
+Architecture: any
+Depends: ${shlibs:Depends}, wireshark-common (= ${binary:Version})
+Recommends: gksu
+Replaces: ethereal (<< 1.0.0-3)
+Conflicts: ethereal (<< 1.0.0-3)
+Description: network traffic analyzer
+ Wireshark is a network traffic analyzer, or "sniffer", for Unix and
+ Unix-like operating systems. A sniffer is a tool used to capture 
+ packets off the wire. Wireshark decodes numerous protocols (too many
+ to list).
+ .
+ This package provides wireshark (the GTK+ version)
+
+Package: tshark
+Architecture: any
+Depends: ${shlibs:Depends}, wireshark-common (= ${binary:Version})
+Replaces: tethereal (<< 1.0.0-3)
+Conflicts: tethereal (<< 1.0.0-3)
+Description: network traffic analyzer (console)
+ Wireshark is a network traffic analyzer, or "sniffer", for Unix and
+ Unix-like operating systems. A sniffer is a tool used to capture 
+ packets off the wire. Wireshark decodes numerous protocols (too many
+ to list).
+ .
+ This package provides the console version of wireshark, named
+ "tshark".
+
+Package: wireshark-dev
+Architecture: any
+Section: devel
+Depends: ${shlibs:Depends}, omniidl (>> 1:3.0.4.1-10) | omniidl4 (>= 4.0.1-2) , libpcap0.8-dev, libtool, libglib2.0-dev, ${python:Depends}, snacc, autotools-dev, debhelper, cdbs, automake1.9, autoconf
+Replaces: ethereal-dev (<< 1.0.0-3)
+Conflicts: ethereal-dev (<< 1.0.0-3)
+XB-Python-Version: ${python:Versions}
+Description: network traffic analyser (development tools)
+ Wireshark is a network traffic analyzer, or "sniffer", for Unix and
+ Unix-like operating systems. A sniffer is a tool used to capture 
+ packets off the wire. Wireshark decodes numerous protocols (too many
+ to list).
+ .
+ This package provides idl2wrs and other necessary files to develop
+ new packet dissectors.
+
--- wireshark-1.0.2.orig/debian/wireshark.manpages
+++ wireshark-1.0.2/debian/wireshark.manpages
@@ -0,0 +1 @@
+wireshark.1
--- wireshark-1.0.2.orig/debian/wireshark-common.manpages
+++ wireshark-1.0.2/debian/wireshark-common.manpages
@@ -0,0 +1,7 @@
+editcap.1
+mergecap.1
+text2pcap.1
+wireshark-filter.4
+capinfos.1
+dumpcap.1
+rawshark.1
--- wireshark-1.0.2.orig/debian/compat
+++ wireshark-1.0.2/debian/compat
@@ -0,0 +1 @@
+6
--- wireshark-1.0.2.orig/debian/wireshark-dev.docs
+++ wireshark-1.0.2/debian/wireshark-dev.docs
@@ -0,0 +1,5 @@
+doc/README.design
+doc/README.developer
+doc/README.idl2wrs
+doc/README.plugins
+doc/README.xml-output
--- wireshark-1.0.2.orig/debian/README.Debian
+++ wireshark-1.0.2/debian/README.Debian
@@ -0,0 +1,24 @@
+Warning!
+
+Using the != operator on combined expressions like: eth.addr, ip.addr, tcp.port,
+udp.port and alike will probably not work as expected!
+
+Often people use a filter string to display something like ip.addr == 1.2.3.4
+which will display all packets containing the IP address 1.2.3.4.
+
+Then they use ip.addr != 1.2.3.4 to see all packets not containing the
+IP address 1.2.3.4 in it. Unfortunately, this does not do the expected.
+Instead, that expression will even be true for packets where either source
+or destination IP address equals 1.2.3.4. The reason for this, is that the
+expression ip.addr != 1.2.3.4 must be read as "the packet contains a field
+named ip.addr with a value different from 1.2.3.4". As an IP datagram
+contains both a source and a destination address, the expression will evaluate
+to true whenever at least one of the two addresses differs from 1.2.3.4.
+If you want to filter out all packets containing IP datagrams to or from
+IP address 1.2.3.4, then the correct filter is !(ip.addr == 1.2.3.4) as it
+reads "show me all the packets for which it is not true that a field named
+ip.addr exists with a value of 1.2.3.4", or in other words, "filter out all
+packets for which there are no occurrences of a field named ip.addr with the
+value 1.2.3.4".
+
+ -- Joost Yervante Damad <andete@debian.org>  Sat, 26 Apr 2008 10:17:17 +0200
--- wireshark-1.0.2.orig/debian/wireshark-dev.files
+++ wireshark-1.0.2/debian/wireshark-dev.files
@@ -0,0 +1,10 @@
+/usr/bin/idl2wrs
+/usr/bin/idl2deb
+/usr/bin/asn2deb
+/usr/lib/wireshark/libwireshark.so
+/usr/lib/wireshark/libwireshark.la
+/usr/lib/wireshark/libwiretap.so
+/usr/lib/wireshark/libwiretap.la
+/usr/lib/python2.3/*
+/usr/include/wireshark/*
+
--- wireshark-1.0.2.orig/debian/wireshark-dev.header-files
+++ wireshark-1.0.2/debian/wireshark-dev.header-files
@@ -0,0 +1,9 @@
+color.h
+config.h
+register.h
+epan/*.h
+epan/crypt/*.h
+epan/dfilter/*.h
+epan/dissectors/*.h
+epan/ftypes/*.h
+wiretap/*.h
--- wireshark-1.0.2.orig/debian/copyright
+++ wireshark-1.0.2/debian/copyright
@@ -0,0 +1,428 @@
+This package was debianized by Frederic Peters <fpeters@debian.org> on
+Sun, 13 Sep 1998 23:05:47 +0200
+
+It was downloaded from http://www.wireshark.org/download/src/all-versions/
+
+The Wireshark web site URL is http://www.wireshark.org/
+
+Upstream Authors:
+  Gerald Combs <gerald@wireshark.org> and contributors
+
+Except where otherwise noted in the source code, Wireshark is covered under
+the GNU General Public License (v2 or later).
+
+Wireshark is copyright (c) 1998-2006 Gerald Combs.
+
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301,  USA.
+
+On Debian systems the GNU GPL may be viewed in /usr/share/common-licenses/GPL.
+
+Wireshark and the "fin" logo are trademarks of Gerald Combs.
+
+Source files included in Wireshark and with other licenses are listed below:
+
+
+Public Domain
+-------------
+
+g711.c:
+ * This source code is a product of Sun Microsystems, Inc. and is provided
+ * for unrestricted use.  Users may copy or modify this source code without
+ * charge.
+ *
+ * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
+ * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ *
+ * Sun source code is provided with no support and without any obligation on
+ * the part of Sun Microsystems, Inc. to assist in its use, correction,
+ * modification or enhancement.
+ *
+ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
+ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
+ * OR ANY PART THEREOF.
+ *
+ * In no event will Sun Microsystems, Inc. be liable for any lost revenue
+ * or profits or other special, indirect and consequential damages, even if
+ * Sun has been advised of the possibility of such damages.
+ *
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California  94043
+
+
+LGPL
+----
+
+mkstemp.c: LGPL, from GNU C Library
+mkstemp.h: idem
+strcasecmp.c: idem
+strncasecmp.c: idem
+strptime.c: idem
+ps.c: idem
+ * Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc.
+ * This file is part of the GNU C Library.
+ *
+ * The GNU C Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The GNU C Library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the GNU C Library; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA  02110-1301,  USA.
+
+
+epan/g_ascii_strtoull.c: LGPL, from GLIB
+epan/g_ascii_strtoull.h: idem
+gtk/ethclist.c: idem
+gtk/ethclist.h: idem
+ * GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright (C) 1997-1998 Jay Painter <jpaint@serv.net><jpaint@gimp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301,  USA.
+
+
+epan/dfilter/grammar.c: LGPL, Copyright 1991-1995 by D. Richard Hipp
+tools/lemon/lempar.c: idem
+ * Copyright 1991-1995 by D. Richard Hipp.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301,  USA.
+
+
+MIT
+---
+
+epan/xmlstub.h:
+ *  This is part of tree.h from the libxml2 distribution.  It is used
+ *  for structure reference when dynamically linking to libxml.
+ *
+ *  The GPL agreement for this file and for libxml2 can be found at
+ *  http://www.xmlsoft.org
+
+Note that libxml2 is MIT-licensed, not GPL.
+
+
+BSD & BSD-like
+--------------
+
+epan/crypt-md5.c:
+epan/crypt-md5.h:
+ * Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * L. Peter Deutsch
+ * ghost@aladdin.com
+
+
+epan/except.c:
+epan/except.h:
+ * Portable Exception Handling for ANSI C.
+ * Copyright (C) 1999 Kaz Kylheku <kaz@ashi.footprints.net>
+ *
+ * Free Software License:
+ *
+ * All rights are reserved by the author, with the following exceptions:
+ * Permission is granted to freely reproduce and distribute this software,
+ * possibly in exchange for a fee, provided that this copyright notice appears
+ * intact. Permission is also granted to adapt this software to produce
+ * derivative works, as long as the modified versions carry this copyright
+ * notice and additional notices stating that the work has been modified.
+ * This source code may be translated into executable form and incorporated
+ * into proprietary software; there is no requirement for such software to
+ * contain a copyright notice related to this source.
+
+
+epan/in_cksum.c:
+epan/inet_aton.c:
+ * Copyright (c) 1988, 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+
+epan/inet_ntop.c:
+epan/inet_pton.c:
+ * Copyright (c) 1996-1999 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+
+
+epan/dissectors/packet-enc.c:
+epan/dissectors/packet-etherip.c:
+epan/dissectors/packet-ipsec-udp.c:
+ * Copyright (c) 2003 Markus Friedl.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+epan/dissectors/packet-pflog.c:
+epan/dissectors/packet-pflog.h:
+ * Copyright 2001 Mike Frantzen
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *    - Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *      with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+
+
+epan/dissectors/packet-vj.c:
+ * This file created by Irfan Khan <ikhan@qualcomm.com>
+ * Copyright (c) 2001  by QUALCOMM, Incorporated.
+ * All Rights reserved.
+ *
+ * Routines to compress and uncompress TCP packets (for transmission
+ * over low speed serial lines).
+ *
+ * Copyright (c) 1989 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+wiretap/erf.c:
+wiretap/erf.h:
+ * Copyright (c) 2003 Endace Technology Ltd, Hamilton, New Zealand.
+ * All rights reserved.
+ *
+ * This software and documentation has been developed by Endace Technology Ltd.
+ * along with the DAG PCI network capture cards. For further information please
+ * visit http://www.endace.com/.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  1. Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *
+ *  2. Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *
+ *  3. The name of Endace Technology Ltd may not be used to endorse or promote
+ *  products derived from this software without specific prior written
+ *  permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ENDACE TECHNOLOGY LTD ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL ENDACE TECHNOLOGY LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+
+
+wiretap/i4b_trace.h:
+ * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+
+
+Files missing license notices
+-----------------------------
+
+tap-funnel.c:
+  Wireshark terms, according to author on wireshark-dev@, message-id:
+  <f20d86b70607200240x2a6f7b0as68daf43b2eef6a56@mail.gmail.com>
+
+editcap.c:
+merge.c:
+mergecap.c:
+  Wireshark terms, according to wireshark-dev@, message-id:
+  <c9a3e4540607210110v50758766wf272c4e6c74d48f3@mail.gmail.com>
+
+epan/epan.c:
+epan/exceptions.h:
+epan/dfilter/gencode.h:
+epan/dfilter/glib-util.c:
+epan/dfilter/glib-util.h:
+  Contributed by Gilbert Ramirez, he has been contacted, his other files are
+  under Wireshark terms, (message-id: <44C1EFA2.3050907@alum.mit.edu>)
+
+epan/dissectors/packet-bootparams.h:
+epan/dissectors/packet-mount.h:
+epan/dissectors/packet-nfs.h:
+epan/dissectors/packet-x11-keysym.h:
+  Corresponding .c files have GPL notices, authors have been contacted for
+  clarification.
+
+epan/dissectors/packet-nlm.h: no license info
+  Wireshark terms, according to wireshark-dev@, message-id:
+  <c9a3e4540607221458j407d552ekf28309c494487a8b@mail.gmail.com>
+
+gtk/win32-file-dlg.h:
+  Contributed by Gerald Combs, Wireshark author, no answer yet but there is no
+  reason why it would not have standard Wireshark terms.  Message-id:
+  <44C1EFA2.3050907@alum.mit.edu>
+
+epan/in_cksum.h:
+  BSD, like in_cksum.c, according to wireshark-dev@, message-id:
+  <44C1EFA2.3050907@alum.mit.edu>
+
+epan/dissectors/packet-diameter-defs.h:
+  GNU GPL notice added in current Subversion repository, will be in file for
+  0.99.3.
+
+snprintf.h:
+  no longer used, according to wireshark-dev@, but it was under GPL like .c
+  message-id: <c9a3e4540607200322j2225fdf8q8687b1b1fd13543a@mail.gmail.com>
--- wireshark-1.0.2.orig/debian/dirs
+++ wireshark-1.0.2/debian/dirs
@@ -0,0 +1 @@
+usr/bin
--- wireshark-1.0.2.orig/debian/wireshark-root.desktop
+++ wireshark-1.0.2/debian/wireshark-root.desktop
@@ -0,0 +1,83 @@
+[Desktop Entry]
+# $Id: wireshark.desktop 11808 2004-08-22 09:22:15Z jmayer $
+# The format of this file is specified at
+# http://freedesktop.org/Standards/desktop-entry-spec/
+# The entries are in the order they are listed in version 0.9.4
+Type=Application
+Version=1.0
+Name=Wireshark (as root)
+GenericName=Network Analyzer
+GenericName[af]=Netwerk Analiseerder
+GenericName[az]=Şəbəkə Analiz Proqramı
+GenericName[bg]=Анализатор на мрежови трафик
+GenericName[bs]=Mrežni analizer
+GenericName[ca]=Analitzador de xarxa
+GenericName[cs]=Analyzátor sítě
+GenericName[da]=Netværksanalyse
+GenericName[de]=Programm für die Netzwerk-Analyse
+GenericName[el]=Αναλυτής Δικτύων
+GenericName[en_GB]=Network Analyser
+GenericName[eo]=Retanalizilo
+GenericName[es]=Analizador de redes
+GenericName[et]=Võrguliikluse analüsaator
+GenericName[eu]=Sare ikerketaria
+GenericName[fa]=تحلیل‌گر شبکه
+GenericName[fi]=Verkkoanalysaattori
+GenericName[fr]=Analyseur réseau
+GenericName[he]=מאבחן רשת
+GenericName[hr]=Program za analiziranje mreža
+GenericName[hu]=hálózatanalizáló
+GenericName[id]=Analisis jaringan
+GenericName[is]=Netskoðunartól
+GenericName[it]=Analizzatore di rete
+GenericName[ja]=ネットワークアナライザ
+GenericName[ko]=네트웍 분석기
+GenericName[lo]=ເຄື່ອງມືວິເຄາະເຄືອຂ່າຍ
+GenericName[lt]=Tinklo analizatorius
+GenericName[lv]=Tīkla Analizators
+GenericName[mk]=Анализатор на мрежи
+GenericName[mn]=Сүлжээ-шинжлэлийн програм
+GenericName[mt]=Analizzatur tan-network
+GenericName[nb]=Nettverksanalyse
+GenericName[nl]=netwerkanalyseprogramma
+GenericName[nn]=Nettverksanalyse
+GenericName[nso]=Moahlaahli wa Kgokagano
+GenericName[pl]=Analizator sieci
+GenericName[pt]=Analisador de Redes
+GenericName[pt_BR]=Analisador de rede
+GenericName[ro]=Analizor de reţea
+GenericName[ru]=Анализатор сетевого трафика
+GenericName[se]=Fierbmeanalysa
+GenericName[sk]=Analyzátor siete
+GenericName[sl]=Analizator omrežij
+GenericName[sr]=Analizatror mreže
+GenericName[ss]=Sihlatiyi seluchungechunge
+GenericName[sv]=Nätverksanalyserare
+GenericName[ta]=Å¨Ä ¬öÅ¡Ç÷
+GenericName[th]=เครื่องมือวิเคราะห์เครือข่าย
+GenericName[tr]=Ağ Analiz Programı
+GenericName[uk]=Аналізатор мережі
+GenericName[ven]=Musengulusi wa Vhukwamani
+GenericName[vi]=Trình phân tích  mạng
+GenericName[xh]=Umcukucezi Womsebenzi womnatha
+GenericName[zh_CN]=网络分析程序
+GenericName[zh_TW]=網路分析程式
+GenericName[zu]=Umhloli Woxhumano olusakazekile
+Comment=Network traffic analyzer
+Comment[fr]=Analyseur de trafic réseau
+Comment[fi]=Verkkoliikenne analysaattori
+Comment[sv]=Nätverkstrafikanalysator
+Icon=hi48-app-wireshark.png
+TryExec=su-to-root
+Exec=su-to-root -X -c /usr/bin/wireshark
+Path=
+Terminal=false
+MimeType=
+Categories=GNOME;Network;
+# Found in Suse 9.1:
+X-KDE-SubstituteUID=true
+# Deprecated:
+# TerminalOptions=
+# BinaryPattern=wireshark
+# MapNotify=true
+# Protocols=
--- wireshark-1.0.2.orig/debian/ethereal-common.NEWS
+++ wireshark-1.0.2/debian/ethereal-common.NEWS
@@ -0,0 +1,13 @@
+wireshark (0.99.2-1) unstable; urgency=low
+
+  Same developers, same code, different name. The Ethereal network protocol
+  analyzer has changed its name to Wireshark.
+
+  Name changes:
+   - ethereal  -> wireshark
+   - tethereal -> tshark
+   - idl2eth   -> idl2wrs
+   
+  See http://www.wireshark.org/news/20060607.html for more information.
+
+ -- Frederic Peters <fpeters@debian.org>  Thu, 12 Oct 2006 15:35:25 +0200
--- wireshark-1.0.2.orig/debian/wireshark.files
+++ wireshark-1.0.2/debian/wireshark.files
@@ -0,0 +1,3 @@
+/usr/bin/wireshark
+/usr/share/applications/
+/usr/share/pixmaps/
--- wireshark-1.0.2.orig/debian/pycompat
+++ wireshark-1.0.2/debian/pycompat
@@ -0,0 +1 @@
+2
--- wireshark-1.0.2.orig/debian/postinst
+++ wireshark-1.0.2/debian/postinst
@@ -0,0 +1,6 @@
+#! /bin/sh -e
+
+if test -e /usr/etc/manuf ; then rm /usr/etc/manuf ; fi
+
+#DEBHELPER#
+
--- wireshark-1.0.2.orig/debian/license-text-about-dialog
+++ wireshark-1.0.2/debian/license-text-about-dialog
@@ -0,0 +1,14 @@
+Wireshark is distributed under the GNU GPL.  There are no restrictions
+on its use.  There are significant restrictions on its distribution.
+
+Parts of Wireshark can be built and distributed as libraries.  These
+parts are still covered by the GPL, and NOT by the Lesser General Public
+License or any other license.
+
+If you create a combined work using all or part of Wireshark, then your
+combined work must be released under a license compatible with the GPL.
+
+...and don't get us started on trademarks.
+
+The full text of the GNU GPL may be viewed in /usr/share/common-licenses/GPL.
+
--- wireshark-1.0.2.orig/debian/tshark.manpages
+++ wireshark-1.0.2/debian/tshark.manpages
@@ -0,0 +1 @@
+tshark.1
--- wireshark-1.0.2.orig/debian/wireshark-common.files
+++ wireshark-1.0.2/debian/wireshark-common.files
@@ -0,0 +1,13 @@
+/usr/bin/dumpcap
+/usr/bin/rawshark
+/usr/bin/capinfos
+/usr/bin/editcap
+/usr/bin/mergecap
+/usr/bin/text2pcap
+/usr/lib/wireshark/libwireshark.so.0
+/usr/lib/wireshark/libwireshark.so.0.0.1
+/usr/lib/wireshark/libwiretap.so.0
+/usr/lib/wireshark/libwiretap.so.0.0.1
+/usr/lib/wireshark/plugins/*
+/usr/share/wireshark/*
+/etc/wireshark/init.lua
--- wireshark-1.0.2.orig/debian/patches/08_wireshark-desktop-menu.dpatch
+++ wireshark-1.0.2/debian/patches/08_wireshark-desktop-menu.dpatch
@@ -0,0 +1,24 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 08_wireshark-desktop-menu.dpatch by  <fred@candle>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad trunk~/wireshark.desktop trunk/wireshark.desktop
+--- trunk~/wireshark.desktop	2008-02-27 20:59:35.000000000 +0100
++++ trunk/wireshark.desktop	2008-03-12 21:21:00.000000000 +0100
+@@ -68,10 +68,11 @@
+ Comment[fi]=Verkkoliikenne analysaattori
+ Comment[fr]=Analyseur de trafic réseau
+ Comment[sv]=Nätverkstrafikanalysator
+-Icon=wireshark.png
++Icon=hi48-app-wireshark.png
+ TryExec=wireshark
+ Exec=wireshark
+ Terminal=false
+ # Categorie entry according to version 1.0 of
+ # http://www.freedesktop.org/wiki/Specifications/menu-spec
+-Categories=System;Monitor;GTK;
++Categories=GNOME;Network;
++Encoding=UTF-8
--- wireshark-1.0.2.orig/debian/patches/04_drop-capabilities.dpatch
+++ wireshark-1.0.2/debian/patches/04_drop-capabilities.dpatch
@@ -0,0 +1,125 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 04_drop-capabilities.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Drop all capabilities but CAP_NET_RAW
+
+@DPATCH@
+diff -urNad wireshark-0.99.7~pre1~/configure.in wireshark-0.99.7~pre1/configure.in
+--- wireshark-0.99.7~pre1~/configure.in	2007-11-22 17:57:27.000000000 +0100
++++ wireshark-0.99.7~pre1/configure.in	2007-11-22 19:49:04.123227069 +0100
+@@ -1092,6 +1092,7 @@
+ 	AC_WIRESHARK_LIBCAP_CHECK
+ fi
+ AC_SUBST(LIBCAP_LIBS)
++LIBS="$LIBS $LIBCAP_LIBS"
+ 
+ dnl Checks for header files.
+ AC_HEADER_STDC
+diff -urNad wireshark-0.99.7~pre1~/gtk/main.c wireshark-0.99.7~pre1/gtk/main.c
+--- wireshark-0.99.7~pre1~/gtk/main.c	2007-11-22 17:57:26.000000000 +0100
++++ wireshark-0.99.7~pre1/gtk/main.c	2007-11-22 19:47:17.867228596 +0100
+@@ -1827,6 +1827,9 @@
+ {
+     gchar *capture_msg;
+ 
++#ifdef HAVE_LIBCAP
++  dropexcesscapabilities();
++#endif
+ 
+ 	gtk_statusbar_pop(GTK_STATUSBAR(packets_bar), packets_ctx);
+ 
+diff -urNad wireshark-0.99.7~pre1~/tshark.c wireshark-0.99.7~pre1/tshark.c
+--- wireshark-0.99.7~pre1~/tshark.c	2007-11-22 17:57:25.000000000 +0100
++++ wireshark-0.99.7~pre1/tshark.c	2007-11-22 19:47:17.871228775 +0100
+@@ -792,6 +792,10 @@
+   capture_opts_init(&capture_opts, NULL /* cfile */);
+ #endif
+ 
++#ifdef HAVE_LIBCAP
++  dropexcesscapabilities();
++#endif
++
+   timestamp_set_type(TS_RELATIVE);
+   timestamp_set_precision(TS_PREC_AUTO);
+ 
+diff -urNad wireshark-0.99.7~pre1~/util.c wireshark-0.99.7~pre1/util.c
+--- wireshark-0.99.7~pre1~/util.c	2007-11-22 17:57:26.000000000 +0100
++++ wireshark-0.99.7~pre1/util.c	2007-11-22 19:47:17.871228775 +0100
+@@ -41,6 +41,10 @@
+ #include <epan/addr_resolv.h>
+ #include <epan/ws_strsplit.h>
+ 
++#ifdef HAVE_LIBCAP
++#include <sys/capability.h>
++#endif
++
+ #include "util.h"
+ 
+ /*
+@@ -317,3 +321,46 @@
+ 	}
+ 	return "";
+ }
++
++
++#ifdef HAVE_LIBCAP
++void dropexcesscapabilities(void)
++{
++	cap_t cap_d;
++	cap_value_t cap_values[] = {
++		/* capabilities we need to keep */
++		CAP_NET_RAW,
++		CAP_DAC_READ_SEARCH
++	};
++	cap_flag_value_t current_cap;
++
++	cap_d = cap_get_proc();
++	if (!cap_d) {
++		g_warning("Could not get capabilities\n");
++		return;
++	}
++
++	cap_get_flag(cap_d, CAP_NET_RAW, CAP_EFFECTIVE, &current_cap);
++	cap_free(&cap_d);
++	if (current_cap == CAP_CLEAR) {
++		return;
++	}
++
++	cap_d = cap_init();
++	if (!cap_d) {
++		g_warning("Could not alloc cap struct\n");
++		return;
++	}
++
++	cap_clear(cap_d);
++	cap_set_flag(cap_d, CAP_PERMITTED, 2, cap_values, CAP_SET);
++	cap_set_flag(cap_d, CAP_EFFECTIVE, 2, cap_values, CAP_SET);
++
++	if (cap_set_proc(cap_d) != 0) {
++		g_warning("Could not set capabilities: %s\n", strerror(errno));
++		cap_free(&cap_d);
++		return;
++	}
++	cap_free(&cap_d);
++}
++#endif /* HAVE_LIBCAP */
+diff -urNad wireshark-0.99.7~pre1~/util.h wireshark-0.99.7~pre1/util.h
+--- wireshark-0.99.7~pre1~/util.h	2007-11-22 17:57:25.000000000 +0100
++++ wireshark-0.99.7~pre1/util.h	2007-11-22 19:47:17.871228775 +0100
+@@ -53,6 +53,15 @@
+ const char *get_conn_cfilter(void);
+ 
+ 
++#ifdef HAVE_LIBCAP
++/*
++ * Limit the potential impact of undiscovered security vulnerabilities by
++ * dropping all capabilities except the sniffer capability we need to do our
++ * job.
++ */
++void dropexcesscapabilities(void);
++#endif /* HAVE_LIBCAP */
++
+ #ifdef __cplusplus
+ }
+ #endif /* __cplusplus */
--- wireshark-1.0.2.orig/debian/patches/21_CVE-2008-3934.dpatch
+++ wireshark-1.0.2/debian/patches/21_CVE-2008-3934.dpatch
@@ -0,0 +1,42 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 21_CVE-2008-3934.dpatch by  <andete@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad lenny~/epan/dissectors/packet-k12.c lenny/epan/dissectors/packet-k12.c
+--- lenny~/epan/dissectors/packet-k12.c	2008-07-10 19:39:24.000000000 +0200
++++ lenny/epan/dissectors/packet-k12.c	2008-09-17 18:24:26.000000000 +0200
+@@ -275,12 +275,10 @@
+ 		if (handles[i] == sscop_handle) {
+ 			sscop_payload_info *p_sscop_info = p_get_proto_data(pinfo->fd, proto_sscop);
+ 			if (!p_sscop_info) {
+-				p_sscop_info = ep_alloc0(sizeof(sscop_payload_info));
+-				if (p_sscop_info)
++				p_sscop_info = se_alloc0(sizeof(sscop_payload_info));
+ 					p_add_proto_data(pinfo->fd, proto_sscop, p_sscop_info);
+-			}
+-			if (p_sscop_info)
+ 				p_sscop_info->subdissector = handles[i+1];
++			}
+ 		}
+ 		/* Add more protocols here */
+ 	}
+@@ -291,14 +289,13 @@
+ 	if (sub_handle == fp_handle) {
+ 		fp_info *p_fp_info = p_get_proto_data(pinfo->fd, proto_fp);
+ 		if (!p_fp_info) {
+-			p_fp_info = ep_alloc0(sizeof(fp_info));
+-			if (p_fp_info)
++			p_fp_info = se_alloc0(sizeof(fp_info));
+ 				p_add_proto_data(pinfo->fd, proto_fp, p_fp_info);
+-		}
+ 
+ 		fill_fp_info(p_fp_info,
+ 			     pinfo->pseudo_header->k12.extra_info,
+ 			     pinfo->pseudo_header->k12.extra_length);
++		}
+ 	}
+ 
+ 	call_dissector(sub_handle, tvb, pinfo, tree);
--- wireshark-1.0.2.orig/debian/patches/09_idl2wrs.dpatch
+++ wireshark-1.0.2/debian/patches/09_idl2wrs.dpatch
@@ -0,0 +1,51 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 09_idl2wrs.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad wireshark-0.99.5~/tools/idl2wrs.sh.in wireshark-0.99.5/tools/idl2wrs.sh.in
+--- wireshark-0.99.5~/tools/idl2wrs.sh.in	2007-02-01 22:53:43.000000000 +0000
++++ wireshark-0.99.5/tools/idl2wrs.sh.in	2007-04-01 08:56:28.000000000 +0000
+@@ -48,40 +48,6 @@
+     exit 1;
+ fi
+ 
+-#
+-# Run wireshark backend, looking for wireshark_be.py and wireshark_gen.py
+-# in pythons's "site-packages" directory. If cannot find that, then
+-# try looking in current directory. If still cannot, then exit with
+-# error.
+-
+-if [ -f $PYTHONPATH/site-packages/wireshark_be.py ] && [ -f $PYTHONPATH/site-packages/wireshark_gen.py ]; then
+-    exec omniidl  -p $PYTHONPATH/site-packages -b wireshark_be $@
+-    /* not reached */
+-fi
+-
+-# Try current directory.
+-
+-if [ -f ./wireshark_be.py ] && [ -f ./wireshark_gen.py ]; then
+-    exec omniidl  -p ./ -b wireshark_be $@
+-    /* not reached */
+-fi
+-
+-# Could not find both wireshark_be.py AND wireshark_gen.py
+-# So let's just try to run it without -p, hoping that the installation
+-# set up a valid path.
+ 
+ exec omniidl -b wireshark_be $@
+ 
+-old code: not reached
+-
+-echo "idl2wrs Error: Could not find both wireshark_be.py AND wireshark_gen.py."
+-echo "Please ensure you have the PYTHONPATH variable set, or that wireshark_be.py "
+-echo "and wireshark_gen.py exist in the current directory. "
+-echo
+-echo "On this system, PYTHONPATH is : $PYTHONPATH"
+-echo
+-
+-exit 2
+-
+-
+-
--- wireshark-1.0.2.orig/debian/patches/00list
+++ wireshark-1.0.2/debian/patches/00list
@@ -0,0 +1,18 @@
+01_idl2deb
+02_asn2deb
+03_preferences
+#04_drop-capabilities
+06_giop-buffer
+08_wireshark-desktop-menu
+09_idl2wrs
+15_sensitive_open
+16_licence_about_location
+17_clique_rm_support
+19_umask
+20_CVE-2008-3933
+21_CVE-2008-3934
+22_CVE-2008-3146_3932
+23_CVE-2008-4680-to-CVE-2008-4685
+24_backport_postdissector
+25_security_fixes_from_1.0.5
+26_security_fixes_from_1.0.6
\ No newline at end of file
--- wireshark-1.0.2.orig/debian/patches/16_licence_about_location.dpatch
+++ wireshark-1.0.2/debian/patches/16_licence_about_location.dpatch
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 16_licence_about_location.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad wireshark-0.99.6rel~/gtk/about_dlg.c wireshark-0.99.6rel/gtk/about_dlg.c
+--- wireshark-0.99.6rel~/gtk/about_dlg.c	2007-07-05 21:22:28.000000000 +0200
++++ wireshark-0.99.6rel/gtk/about_dlg.c	2007-09-29 15:53:16.822998083 +0200
+@@ -411,7 +411,7 @@
+   GtkWidget   *page;
+   char *absolute_path;
+ 
+-  absolute_path = get_datafile_path("COPYING");
++  absolute_path = get_datafile_path("ABOUT.GPL");
+   page = text_page_new(absolute_path);
+ 
+   return page;
--- wireshark-1.0.2.orig/debian/patches/03_preferences.dpatch
+++ wireshark-1.0.2/debian/patches/03_preferences.dpatch
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_preferences.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: use Debian sensible-browser
+
+@DPATCH@
+diff -urNad wireshark-0.99.7~pre1~/epan/prefs.c wireshark-0.99.7~pre1/epan/prefs.c
+--- wireshark-0.99.7~pre1~/epan/prefs.c	2007-11-22 17:57:25.000000000 +0100
++++ wireshark-0.99.7~pre1/epan/prefs.c	2007-11-22 18:04:50.555226510 +0100
+@@ -1198,7 +1198,7 @@
+   prefs.gui_ask_unsaved            = TRUE;
+   prefs.gui_find_wrap              = TRUE;
+   prefs.gui_use_pref_save          = FALSE;
+-  prefs.gui_webbrowser             = g_strdup(HTML_VIEWER " %s");
++  prefs.gui_webbrowser             = g_strdup("sensible-browser %s");
+   prefs.gui_window_title           = g_strdup("");
+   prefs.gui_layout_type            = layout_type_5;
+   prefs.gui_layout_content_1       = layout_pane_content_plist;
--- wireshark-1.0.2.orig/debian/patches/23_CVE-2008-4680-to-CVE-2008-4685.dpatch
+++ wireshark-1.0.2/debian/patches/23_CVE-2008-4680-to-CVE-2008-4685.dpatch
@@ -0,0 +1,207 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport security fixes from 1.0.4 <jmm@debian.org>
+
+@DPATCH@
+diff -Naur wireshark-1.0.2.orig/epan/dissectors/packet-bthci_acl.c wireshark-1.0.2/epan/dissectors/packet-bthci_acl.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-bthci_acl.c	2008-07-10 19:39:27.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-bthci_acl.c	2008-11-13 16:43:15.000000000 +0100
+@@ -169,9 +169,9 @@
+ 				mfp->first_frame=pinfo->fd->num;
+ 				mfp->last_frame=0;
+ 				mfp->tot_len=l2cap_length+4;
+-				mfp->reassembled=se_alloc(l2cap_length+4);
+-				tvb_memcpy(tvb, (guint8*)mfp->reassembled, offset, tvb_length_remaining(tvb, offset));
+-				mfp->cur_off=tvb_length_remaining(tvb, offset);
++				mfp->reassembled=se_alloc(mfp->tot_len);
++				tvb_memcpy(tvb, (guint8*)mfp->reassembled, offset, mfp->tot_len);
++				mfp->cur_off=mfp->tot_len;
+ 				se_tree_insert32(chandle_data->start_fragments, pinfo->fd->num, mfp);
+ 			} else {
+ 				mfp=se_tree_lookup32(chandle_data->start_fragments, pinfo->fd->num);
+diff -Naur wireshark-1.0.2.orig/epan/dissectors/packet-btrfcomm.c wireshark-1.0.2/epan/dissectors/packet-btrfcomm.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-btrfcomm.c	2008-07-10 19:39:24.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-btrfcomm.c	2008-11-13 16:43:30.000000000 +0100
+@@ -284,14 +284,9 @@
+ 	if(!pinfo->fd->flags.visited){
+ 		dlci_state=se_tree_lookup32(dlci_table, dlci);
+ 		if(!dlci_state){
+-			dlci_state=se_alloc(sizeof(dlci_state_t));
+-			dlci_state->do_credit_fc=0;
+-			dlci_state->direction[0].len=0;
++			dlci_state=se_alloc0(sizeof(dlci_state_t));
+ 			dlci_state->direction[0].current=-1;
+-			dlci_state->direction[0].stream_buf=NULL;
+-			dlci_state->direction[1].len=0;
+ 			dlci_state->direction[1].current=-1;
+-			dlci_state->direction[1].stream_buf=NULL;
+ 			se_tree_insert32(dlci_table, dlci, dlci_state);
+ 		}
+ 
+@@ -642,14 +637,9 @@
+ 
+ 	dlci_state=se_tree_lookup32(dlci_table, dlci);
+ 	if(!dlci_state){
+-		dlci_state=se_alloc(sizeof(dlci_state_t));
+-		dlci_state->do_credit_fc=0;
+-		dlci_state->direction[0].len=0;
++		dlci_state=se_alloc0(sizeof(dlci_state_t));
+ 		dlci_state->direction[0].current=-1;
+-		dlci_state->direction[0].stream_buf=NULL;
+-		dlci_state->direction[1].len=0;
+ 		dlci_state->direction[1].current=-1;
+-		dlci_state->direction[1].stream_buf=NULL;
+ 		se_tree_insert32(dlci_table, dlci, dlci_state);
+ 	}
+ 
+diff -Naur wireshark-1.0.2.orig/epan/dissectors/packet-frame.c wireshark-1.0.2/epan/dissectors/packet-frame.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-frame.c	2008-07-10 19:39:27.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-frame.c	2008-11-13 16:43:43.000000000 +0100
+@@ -351,7 +351,49 @@
+ 		pinfo->layer_names = NULL;
+ 	}
+ 
+-	call_all_postdissectors(tvb, pinfo, parent_tree);
++	/*  Call postdissectors if we have any (while trying to avoid another
++	 *  TRY/CATCH)
++	 */
++	if (have_postdissector()) {
++	    TRY {
++#ifdef _MSC_VER
++	    /* Win32: Visual-C Structured Exception Handling (SEH) to trap hardware exceptions like memory access violations */
++	    /* (a running debugger will be called before the except part below) */
++	    __try {
++#endif
++		call_all_postdissectors(tvb, pinfo, parent_tree);
++#ifdef _MSC_VER
++	    } __except(TRUE /* handle all exceptions */) {
++		switch(GetExceptionCode()) {
++		case(STATUS_ACCESS_VIOLATION):
++			    show_exception(tvb, pinfo, parent_tree, DissectorError,
++			"STATUS_ACCESS_VIOLATION: dissector accessed an invalid memory address");
++		    break;
++		case(STATUS_INTEGER_DIVIDE_BY_ZERO):
++			    show_exception(tvb, pinfo, parent_tree, DissectorError,
++			"STATUS_INTEGER_DIVIDE_BY_ZERO: dissector tried an integer division by zero");
++		    break;
++		case(STATUS_STACK_OVERFLOW):
++			    show_exception(tvb, pinfo, parent_tree, DissectorError,
++			"STATUS_STACK_OVERFLOW: dissector overflowed the stack (e.g. endless loop)");
++		    /* XXX - this will have probably corrupted the stack, which makes problems later in the exception code */
++		    break;
++		/* XXX - add other hardware exception codes as required */
++		default:
++			    show_exception(tvb, pinfo, parent_tree, DissectorError,
++			g_strdup_printf("dissector caused an unknown exception: 0x%x", GetExceptionCode()));
++		}
++	    }
++#endif
++	    }
++	    CATCH(OutOfMemoryError) {
++		    RETHROW;
++	    }
++	    CATCH_ALL {
++		    show_exception(tvb, pinfo, parent_tree, EXCEPT_CODE, GET_MESSAGE);
++	    }
++	    ENDTRY;
++	}
+ 
+ 	tap_queue_packet(frame_tap, pinfo, NULL);
+ 
+diff -Naur wireshark-1.0.2.orig/epan/dissectors/packet-q931.c wireshark-1.0.2/epan/dissectors/packet-q931.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-q931.c	2008-07-10 19:39:26.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-q931.c	2008-11-13 16:43:57.000000000 +0100
+@@ -1182,8 +1182,8 @@
+ 	{ 0x00, NULL }
+ };
+ 
+-void
+-dissect_q931_cause_ie(tvbuff_t *tvb, int offset, int len,
++static void
++dissect_q931_cause_ie_unsafe(tvbuff_t *tvb, int offset, int len,
+     proto_tree *tree, int hf_cause_value, guint8 *cause_value)
+ {
+ 	guint8 octet;
+@@ -1341,6 +1341,16 @@
+ 	}
+ }
+ 
++void
++dissect_q931_cause_ie(tvbuff_t *tvb, int offset, int len,
++    proto_tree *tree, int hf_cause_value, guint8 *cause_value)
++{
++  gboolean have_valid_q931_pi_save = have_valid_q931_pi;
++  have_valid_q931_pi = FALSE;
++  dissect_q931_cause_ie_unsafe(tvb, offset, len, tree, hf_cause_value, cause_value);
++  have_valid_q931_pi =  have_valid_q931_pi_save;
++}
++
+ /*
+  * Dissect a Call state information element.
+  */
+@@ -2768,7 +2778,7 @@
+ 					break;
+ 
+ 				case CS0 | Q931_IE_CAUSE:
+-					dissect_q931_cause_ie(tvb,
++					dissect_q931_cause_ie_unsafe(tvb,
+ 						offset + 2, info_element_len,
+ 						ie_tree,
+ 						hf_q931_cause_value, &dummy);
+diff -Naur wireshark-1.0.2.orig/epan/dissectors/packet-usb.c wireshark-1.0.2/epan/dissectors/packet-usb.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-usb.c	2008-07-10 19:39:25.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-usb.c	2008-11-13 16:44:09.000000000 +0100
+@@ -242,10 +242,9 @@
+     usb_conv_info = conversation_get_proto_data(conversation, proto_usb);
+     if(!usb_conv_info){
+         /* no not yet so create some */
+-        usb_conv_info = se_alloc(sizeof(usb_conv_info_t));
++        usb_conv_info = se_alloc0(sizeof(usb_conv_info_t));
+         usb_conv_info->interfaceClass=IF_CLASS_UNKNOWN;
+         usb_conv_info->transactions=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
+-        usb_conv_info->class_data=NULL;
+ 
+         conversation_add_proto_data(conversation, proto_usb, usb_conv_info);
+     }
+@@ -504,10 +503,9 @@
+     /* save the class so we can access it later in the endpoint descriptor */
+     usb_conv_info->interfaceClass=tvb_get_guint8(tvb, offset);
+     if(!pinfo->fd->flags.visited){
+-        usb_trans_info->interface_info=se_alloc(sizeof(usb_conv_info_t));
++        usb_trans_info->interface_info=se_alloc0(sizeof(usb_conv_info_t));
+         usb_trans_info->interface_info->interfaceClass=tvb_get_guint8(tvb, offset);
+         usb_trans_info->interface_info->transactions=se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "usb transactions");
+-        usb_trans_info->interface_info->class_data=NULL;
+     }
+     offset++;
+ 
+@@ -1052,12 +1050,9 @@
+         /* this is a request */
+         usb_trans_info=se_tree_lookup32(usb_conv_info->transactions, pinfo->fd->num);
+         if(!usb_trans_info){
+-            usb_trans_info=se_alloc(sizeof(usb_trans_info_t));
++            usb_trans_info=se_alloc0(sizeof(usb_trans_info_t));
+             usb_trans_info->request_in=pinfo->fd->num;
+-            usb_trans_info->response_in=0;
+             usb_trans_info->req_time=pinfo->fd->abs_ts;
+-            usb_trans_info->requesttype=0;
+-            usb_trans_info->request=0;
+             se_tree_insert32(usb_conv_info->transactions, pinfo->fd->num, usb_trans_info);
+         }
+         usb_conv_info->usb_trans_info=usb_trans_info;
+diff -Naur wireshark-1.0.2.orig/wiretap/commview.c wireshark-1.0.2/wiretap/commview.c
+--- wireshark-1.0.2.orig/wiretap/commview.c	2008-07-10 19:39:33.000000000 +0200
++++ wireshark-1.0.2/wiretap/commview.c	2008-11-13 16:42:59.000000000 +0100
+@@ -160,6 +160,11 @@
+ 	case MEDIUM_TOKEN_RING :
+ 		wth->phdr.pkt_encap = WTAP_ENCAP_TOKEN_RING;
+ 		break;
++	default:
++		*err = WTAP_ERR_BAD_RECORD;
++		*err_info = g_strdup_printf("commview: unsupported encap: %u",
++					    cv_hdr.flags & FLAGS_MEDIUM);
++		return FALSE;
+ 	}
+ 
+ 	buffer_assure_space(wth->frame_buffer, cv_hdr.data_len);
--- wireshark-1.0.2.orig/debian/patches/20_CVE-2008-3933.dpatch
+++ wireshark-1.0.2/debian/patches/20_CVE-2008-3933.dpatch
@@ -0,0 +1,28 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 20_CVE-2008-3933.dpatch by  <andete@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad lenny~/epan/tvbuff.c lenny/epan/tvbuff.c
+--- lenny~/epan/tvbuff.c	2008-07-10 19:39:27.000000000 +0200
++++ lenny/epan/tvbuff.c	2008-09-15 21:27:59.000000000 +0200
+@@ -2876,7 +2876,7 @@
+ 			if (flags & (1 << 3)) {
+ 				/* A null terminated filename */
+ 
+-				while (*c != '\0') {
++				while ((c - compr) < comprlen && *c != '\0') {
+ 					c++;
+ 				}
+ 
+@@ -2886,7 +2886,7 @@
+ 			if (flags & (1 << 4)) {
+ 				/* A null terminated comment */
+ 
+-				while (*c != '\0') {
++				while ((c - compr) < comprlen && *c != '\0') {
+ 					c++;
+ 				}
+ 
--- wireshark-1.0.2.orig/debian/patches/01_idl2deb.dpatch
+++ wireshark-1.0.2/debian/patches/01_idl2deb.dpatch
@@ -0,0 +1,424 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_idl2deb.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: idl2deb - create Debian packages from idl2wrs modules
+
+@DPATCH@
+diff -urNad --exclude=CVS --exclude=.svn ./idl2deb /tmp/dpep-work.K2bQz4/wireshark-0.10.11/idl2deb
+--- ./idl2deb	1970-01-01 01:00:00.000000000 +0100
++++ /tmp/dpep-work.K2bQz4/wireshark-0.10.11/idl2deb	2005-07-17 19:35:08.000000000 +0200
+@@ -0,0 +1,252 @@
++#!/usr/bin/env python
++
++# idl2deb - quick hack by W. Borgert <debacle@debian.org> to create
++# Debian GNU/Linux packages from idl2wrs modules for Wireshark.
++# Copyright 2003, W. Borgert
++
++# Makefile.am and configure.ac code by:
++# Copyright 2001, Ericsson Inc.
++# Frank Singleton <frank.singleton@ericsson.com>
++#
++# Wireshark - Network traffic analyzer
++# By Gerald Combs <gerald@wireshark.com>
++# Copyright 1998 Gerald Combs
++
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++# 
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++# 
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
++
++import getopt, os, string, sys, time
++
++scriptinfo = """idl2deb version 2003-10-03
++Copyright 2003, W. Borgert
++Free software, released under the terms of the GPL."""
++
++options = {'dbopts':   "",
++           'email':    "invalid@invalid.invalid",
++           'help':     0,
++           'idl':      None,
++           'name':     "No Name",
++           'preserve': 0,
++           'version':  0}
++
++def bootstrap():
++    """Generate Makefile.in and configure script."""
++    os.system("aclocal")
++    os.system("autoconf")
++    os.system("libtoolize --automake --copy --force")
++    os.system("automake --add-missing --copy --foreign")
++
++def create_file(filename, content, mode = None):
++    """Create a file with given content."""
++    global options
++    if options['preserve'] and os.path.isfile(filename):
++        return
++    f = open(filename, 'w')
++    f.write(content)
++    f.close()
++    if mode:
++        os.chmod(filename, mode)
++
++def create_files(version, deb, email, idl, name, iso, rfc):
++    """Create all files for the .deb build process."""
++    base = idl.lower()[:-4]
++    create_file("Makefile.am", """#
++
++plugindir = @plugindir@
++
++plugin_LTLIBRARIES = %s.la
++%s_la_SOURCES = packet-%s.c
++%s_la_LDFLAGS = -module -avoid-version
++
++GLIB_CFLAGS = `pkg-config --cflags glib-2.0`
++GLIB_LIBS = `pkg-config --libs glib-2.0`
++BUILT_SOURCES = packet-%s.c
++INCLUDES = -DHAVE_CONFIG -DHAVE_SYS_TYPES_H -DHAVE_SYS_TIME_H \\
++    -DHAVE_STDARG_H -D_U_=\"__attribute__((unused))\" \\
++    -I/usr/include/wireshark -DWS_VAR_IMPORT=extern $(GLIB_CFLAGS)
++LDADD = $(GLIB_LIBS)
++
++# Libs must be cleared, or else libtool won't create a shared module.
++# If your module needs to be linked against any particular libraries,
++# add them here.
++LIBS =
++
++%s_la_DEPENDENCIES = packet-%s-static.o
++
++packet-%s-static.o: packet-%s.c
++	$(LTCOMPILE) -c -o packet-%s-static.o \\
++	  -D__WIRESHARK_STATIC__ packet-%s.c
++
++packet-%s.c: """  % ((base,) * 12) + idl + """
++	$(IDL2WRS) $< > $@
++""")
++
++    create_file("configure.ac", """AC_INIT(%s, 1.0)
++AC_PROG_LIBTOOL
++AM_INIT_AUTOMAKE
++AM_MAINTAINER_MODE
++AC_PROG_CC
++AC_STDC_HEADERS
++AC_PROG_INSTALL
++AC_SUBST(CFLAGS)
++AC_SUBST(CPPFLAGS)
++AC_SUBST(LDFLAGS)
++PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.2.2)
++AC_SUBST(GLIB_CFLAGS)
++AC_SUBST(GLIB_LIBS)
++IDL2WRS=\"`type -p idl2wrs`\"
++AC_SUBST(IDL2WRS)
++WIRESHARK_VERSION=\"%s\"
++plugindir=\"$libdir/wireshark/plugins/$WIRESHARK_VERSION\"
++AC_SUBST(plugindir)
++AC_OUTPUT([Makefile])
++""" % (base, version))
++
++    if not os.path.isdir("debian"):
++        os.mkdir("debian")
++
++    create_file("debian/rules", """#!/usr/bin/make -f
++
++include /usr/share/cdbs/1/rules/debhelper.mk
++include /usr/share/cdbs/1/class/autotools.mk
++
++PREFIX=`pwd`/debian/wireshark-giop-%s
++
++binary-post-install/wireshark-giop-%s::
++	rm -f $(PREFIX)/usr/lib/wireshark/plugins/%s/*.a
++""" % (base, base, version), 0755)
++
++    create_file("debian/control", """Source: wireshark-giop-%s
++Section: net
++Priority: optional
++Maintainer: %s <%s>
++Standards-Version: 3.6.1.0
++Build-Depends: wireshark-dev, autotools-dev, debhelper, cdbs
++
++Package: wireshark-giop-%s
++Architecture: any
++Depends: wireshark (= %s), ${shlibs:Depends}
++Description: GIOP dissector for CORBA interface %s
++ This package provides a dissector for GIOP (General Inter-ORB
++ Protocol) for the Wireshark protocol analyser.  It decodes the CORBA
++ (Common Object Request Broker Architecture) interfaces described
++ in the IDL (Interface Definition Language) file '%s.idl'.
++""" % (base, name, email, base, deb, base, base))
++
++    create_file("debian/changelog",
++            """wireshark-giop-%s (0.0.1-1) unstable; urgency=low
++
++  * Automatically created package.
++
++ -- %s <%s>  %s
++""" % (base, name, email, rfc + "\n    (" + iso + ")"))
++
++    create_file("debian/copyright",
++            """This package has been created automatically by idl2deb on
++%s for Debian GNU/Linux.
++
++Wireshark: http://www.wireshark.org/
++
++Copyright:
++
++GPL, as evidenced by existence of GPL license file \"COPYING\".
++(the GNU GPL may be viewed on Debian systems in
++/usr/share/common-licenses/GPL)
++""" % (iso))
++
++def get_wrs_version():
++    """Detect version of wireshark-dev package."""
++    deb = os.popen(
++        "dpkg-query -W --showformat='${Version}' wireshark-dev").read()
++    debv = string.find(deb, "-")
++    if debv == -1: debv = len(deb)
++    version = deb[string.find(deb, ":")+1:debv]
++    return version, deb
++
++def get_time():
++    """Detect current time and return ISO and RFC time string."""
++    currenttime = time.gmtime()
++    return time.strftime("%Y-%m-%d %H:%M:%S +0000", currenttime), \
++           time.strftime("%a, %d %b %Y %H:%M:%S +0000", currenttime)
++
++def main():
++    global options
++    process_opts(sys.argv)
++    iso, rfc = get_time()
++    version, deb = get_wrs_version()
++    create_files(version, deb,
++                 options['email'], options['idl'], options['name'],
++                 iso, rfc)
++    bootstrap()
++    os.system("dpkg-buildpackage " + options['dbopts'])
++
++def process_opts(argv):
++    """Process command line options."""
++    global options
++    try:
++        opts, args = getopt.getopt(argv[1:], "d:e:hi:n:pv",
++                                   ["dbopts=",
++                                    "email=",
++                                    "help",
++                                    "idl=",
++                                    "name=",
++                                    "preserve",
++                                    "version"])
++    except getopt.GetoptError:
++        usage(argv[0])
++        sys.exit(1)
++    for o, a in opts:
++        if o in ("-d", "--dbopts"):
++            options['dbopts'] = a
++        if o in ("-e", "--email"):
++            options['email'] = a
++        if o in ("-h", "--help"):
++            options['help'] = 1
++        if o in ("-i", "--idl"):
++            options['idl'] = a
++        if o in ("-n", "--name"):
++            options['name'] = a
++        if o in ("-p", "--preserve"):
++            options['preserve'] = 1
++        if o in ("-v", "--version"):
++            options['version'] = 1
++    if options['help']:
++        usage(argv[0])
++        sys.exit(0)
++    if options['version']:
++        print scriptinfo
++        sys.exit(0)
++    if not options['idl']:
++        print "mandatory IDL file parameter missing"
++        sys.exit(1)
++    if not os.access(options['idl'], os.R_OK):
++        print "IDL file not accessible"
++        sys.exit(1)
++
++def usage(name):
++    """Print usage help."""
++    print "Usage: " + name + " <parameters>\n" + \
++          "Parameters are\n" + \
++          "  --dbopts   -d opts,    options for dpkg-buildpackage\n" + \
++          "  --email    -e address, use e-mail address\n" + \
++          "  --idl      -i idlfile, IDL file to use (mandatory)\n" + \
++          "  --help     -h,         print help and exit\n" + \
++          "  --name     -n name,    use user name\n" + \
++          "  --preserve -p,         do not overwrite files\n" + \
++          "  --version  -v,         print version and exit\n" + \
++          "Example:\n" + \
++          name + " -e me@foo.net -i bar.idl -n \"My Name\" " + \
++          "-d \"-rfakeroot -uc -us\""
++if __name__ == '__main__':
++    main()
+diff -urNad --exclude=CVS --exclude=.svn ./idl2deb.dbk /tmp/dpep-work.K2bQz4/wireshark-0.10.11/idl2deb.dbk
+--- ./idl2deb.dbk	1970-01-01 01:00:00.000000000 +0100
++++ /tmp/dpep-work.K2bQz4/wireshark-0.10.11/idl2deb.dbk	2005-07-17 19:35:08.000000000 +0200
+@@ -0,0 +1,157 @@
++<?xml version='1.0' encoding='ISO-8859-1'?>
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
++  <!ENTITY command     "<command>idl2deb</command>">
++  <!ENTITY email       "<email>debacle@debian.org</email>">
++  <!ENTITY author      "W. Borgert">
++  <!ENTITY debian      "<productname>Debian GNU/Linux</productname>">
++]>
++
++<refentry>
++  <refentryinfo>
++    <address>
++      &email;
++    </address>
++    <author>
++      <firstname>W.</firstname>
++      <surname>Borgert</surname>
++    </author>
++    <copyright>
++      <year>2003</year>
++      <year>2005</year>
++      <holder>&author;</holder>
++    </copyright>
++    <date>2003-08-17</date>
++    <keywordset>
++      <keyword>CORBA</keyword>
++      <keyword>IDL</keyword>
++      <keyword>Wireshark</keyword>
++    </keywordset>
++    <revhistory>
++      <revision>
++	<revnumber>2003-08-17</revnumber>
++	<date>2003-08-17</date>
++	<authorinitials>debacle</authorinitials>
++	<revremark>First version.</revremark>
++      </revision>
++    </revhistory>
++  </refentryinfo>
++  <refmeta>
++    <refentrytitle>idl2deb</refentrytitle>
++
++    <manvolnum>1</manvolnum>
++  </refmeta>
++  <refnamediv>
++    <refname>idl2deb</refname>
++
++    <refpurpose>create a Debian package for CORBA monitoring from IDL</refpurpose>
++  </refnamediv>
++  <refsynopsisdiv>
++    <cmdsynopsis>
++      &command;
++      <arg><option>-d <replaceable>opts</replaceable></option></arg>
++      <arg><option>--dbopts=<replaceable>opts</replaceable></option></arg>
++      <arg><option>-e <replaceable>address</replaceable></option></arg>
++      <arg><option>--email=<replaceable>address</replaceable></option></arg>
++      <arg>-i <replaceable>idlfile</replaceable></arg>
++      <arg>--idl=<replaceable>idlfile</replaceable></arg>
++      <arg><option>-h</option></arg>
++      <arg><option>--help</option></arg>
++      <arg><option>-n <replaceable>name</replaceable></option></arg>
++      <arg><option>--name=<replaceable>name</replaceable></option></arg>
++      <arg><option>-p</option></arg>
++      <arg><option>--preserve</option></arg>
++      <arg><option>-v</option></arg>
++      <arg><option>--version</option></arg>
++    </cmdsynopsis>
++  </refsynopsisdiv>
++  <refsect1>
++    <title>Description</title>
++
++    <para>This manual page documents briefly the
++      <command>idl2deb</command> command.</para>
++
++    <para>&command; takes an CORBA IDL file as input and creates a
++    Debian package from it.  The package contains a loadable module
++    for the wireshark network analyser.</para>
++  </refsect1>
++  <refsect1>
++    <title>Options</title>
++
++    <variablelist>
++      <varlistentry>
++        <term><option>-d <replaceable>opts</replaceable></option>
++          <option>--dbopts=<replaceable>opts</replaceable></option></term>
++        <listitem>
++          <para>options for dpkg-buildpackage.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-e <replaceable>address</replaceable></option>
++          <option>--email=<replaceable>address</replaceable></option></term>
++        <listitem>
++          <para>use e-mail address.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-i <replaceable>idlfile</replaceable></option>
++          <option>--idl=<replaceable>idlfile</replaceable></option></term>
++        <listitem>
++          <para>IDL file to use (mandatory).</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-h</option>
++          <option>--help</option>
++        </term>
++        <listitem>
++          <para>print help and exit.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-n <replaceable>name</replaceable></option>
++          <option>--name=<replaceable>name</replaceable></option></term>
++        <listitem>
++          <para>use user name.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-p</option>
++          <option>--preserve</option></term>
++        <listitem>
++          <para>do not overwrite files.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-v</option>
++          <option>--version</option></term>
++        <listitem>
++          <para>print version and exit.</para>
++        </listitem>
++      </varlistentry>
++    </variablelist>
++
++    <para>Example:</para>
++
++    <programlisting>/usr/bin/idl2deb -e me@foo.net -i bar.idl \
++-n &quot;My Name&quot; -d &quot;-rfakeroot -uc -us&quot;</programlisting>
++
++  </refsect1>
++  <refsect1>
++    <title>See Also</title>
++
++    <para>A lot of tools are used, which you have to
++    <command>apt-get install</command>: wireshark-dev, python,
++    cdbs, autotools-dev, debhelper, dpkg-dev.</para>
++  </refsect1>
++
++  <refsect1>
++    <title>Copying</title>
++
++    <para>This manual page was written by &author; &email; for
++      &debian; (but may be used by others).  Permission is granted to
++      copy, distribute and/or modify this document under the terms of
++      the GNU General Public License, Version 2 or any later
++      version published by the Free Software Foundation.</para>
++  </refsect1>
++</refentry>
--- wireshark-1.0.2.orig/debian/patches/06_giop-buffer.dpatch
+++ wireshark-1.0.2/debian/patches/06_giop-buffer.dpatch
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 06_giop-buffer.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad --exclude=CVS --exclude=.svn ./epan/dissectors/packet-giop.c /tmp/dpep-work.7N90PO/wireshark-0.10.11/epan/dissectors/packet-giop.c
+--- ./epan/dissectors/packet-giop.c	2005-07-17 18:52:08.000000000 +0200
++++ /tmp/dpep-work.7N90PO/wireshark-0.10.11/epan/dissectors/packet-giop.c	2005-07-17 18:55:32.000000000 +0200
+@@ -1760,6 +1760,8 @@
+ 
+   if (len == 0)
+     return FALSE;
++  if (*offset > header->message_size)
++    return FALSE;
+ 
+   saved_proto = pinfo->current_proto;
+   for (i=0; i<len; i++) {
--- wireshark-1.0.2.orig/debian/patches/26_security_fixes_from_1.0.6.dpatch
+++ wireshark-1.0.2/debian/patches/26_security_fixes_from_1.0.6.dpatch
@@ -0,0 +1,185 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport security fixes from 1.0.6 <jmm@debian.org>
+
+@DPATCH@
+diff -aur wireshark-1.0.2.orig/epan/dissectors/packet-dcerpc-nt.c wireshark-1.0.2/epan/dissectors/packet-dcerpc-nt.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-dcerpc-nt.c	2008-07-10 19:39:22.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-dcerpc-nt.c	2009-02-08 22:50:29.000000000 +0100
+@@ -118,7 +118,7 @@
+ 	if (add_subtree) {
+ 
+ 		item = proto_tree_add_text(
+-			tree, tvb, offset, 0,
++			tree, tvb, offset, 0, "%s",
+ 			proto_registrar_get_name(hf_index));
+ 
+ 		subtree = proto_item_add_subtree(item, ett_nt_counted_string);
+@@ -185,7 +185,7 @@
+ 	if (di->conformant_run)
+ 		return offset;
+ 
+-	item = proto_tree_add_text(tree, tvb, offset, 0,
++	item = proto_tree_add_text(tree, tvb, offset, 0, "%s",
+ 		proto_registrar_get_name(hf_index));
+ 
+ 	subtree = proto_item_add_subtree(item, ett_nt_counted_byte_array);
+@@ -291,7 +291,7 @@
+ 	if (di->conformant_run)
+ 		return offset;
+ 
+-	item = proto_tree_add_text(tree, tvb, offset, 0,
++	item = proto_tree_add_text(tree, tvb, offset, 0, "%s",
+ 		proto_registrar_get_name(hf_index));
+ 
+ 	subtree = proto_item_add_subtree(item, ett_nt_counted_ascii_string);
+diff -aur wireshark-1.0.2.orig/epan/dissectors/packet-mq.c wireshark-1.0.2/epan/dissectors/packet-mq.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-mq.c	2008-07-10 19:39:24.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-mq.c	2009-02-08 22:51:21.000000000 +0100
+@@ -2278,7 +2278,7 @@
+ 						structId = tvb_get_ntohl(tvb, offset);
+ 						if (tree)
+ 						{
+-							proto_tree_add_text(mqroot_tree, tvb, offset, -1, val_to_str(structId, mq_structid_vals, "Unknown (0x%08x)"));
++							proto_tree_add_text(mqroot_tree, tvb, offset, -1, "%s", val_to_str(structId, mq_structid_vals, "Unknown (0x%08x)"));
+ 						}
+ 					}
+ 				}
+diff -aur wireshark-1.0.2.orig/epan/dissectors/packet-q2931.c wireshark-1.0.2/epan/dissectors/packet-q2931.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-q2931.c	2008-07-10 19:39:24.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-q2931.c	2009-02-08 22:51:32.000000000 +0100
+@@ -1990,17 +1990,17 @@
+ 	    "Information element extension: 0x%02x",
+ 	    info_element_ext);
+ 	ie_ext_tree = proto_item_add_subtree(ti, ett_q2931_ie_ext);
+-	proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1,
++	proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1, "%s",
+ 	    decode_enumerated_bitfield(info_element_ext,
+ 	        Q2931_IE_COMPAT_CODING_STD, 8,
+ 		coding_std_vals, "Coding standard: %s"));
+-	proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1,
++	proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1, "%s",
+ 	    decode_boolean_bitfield(info_element_ext,
+ 	    Q2931_IE_COMPAT_FOLLOW_INST, 8,
+ 	    "Follow explicit error handling instructions",
+   	    "Regular error handling procedures apply"));
+ 	if (info_element_ext & Q2931_IE_COMPAT_FOLLOW_INST) {
+-		proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1,
++		proto_tree_add_text(ie_ext_tree, tvb, offset + 1, 1, "%s",
+ 		    decode_enumerated_bitfield(info_element_ext,
+ 		        Q2931_IE_COMPAT_ACTION_IND, 8,
+ 			ie_action_ind_vals,
+diff -aur wireshark-1.0.2.orig/epan/dissectors/packet-wccp.c wireshark-1.0.2/epan/dissectors/packet-wccp.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-wccp.c	2008-07-10 19:39:25.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-wccp.c	2009-02-08 22:51:48.000000000 +0100
+@@ -471,7 +471,7 @@
+ 			break;
+ 		}
+ 
+-		ti = proto_tree_add_text(wccp_tree, tvb, offset, item_length + 4,
++		ti = proto_tree_add_text(wccp_tree, tvb, offset, item_length + 4, "%s",
+ 		    val_to_str(type, info_type_vals, "Unknown info type (%u)"));
+ 		info_tree = proto_item_add_subtree(ti, ett);
+ 		proto_tree_add_text(info_tree, tvb, offset, 2,
+diff -aur wireshark-1.0.2.orig/epan/dissectors/packet-xml.c wireshark-1.0.2/epan/dissectors/packet-xml.c
+--- wireshark-1.0.2.orig/epan/dissectors/packet-xml.c	2008-07-10 19:39:26.000000000 +0200
++++ wireshark-1.0.2/epan/dissectors/packet-xml.c	2009-02-08 22:51:59.000000000 +0100
+@@ -304,7 +304,7 @@
+ 	xml_frame_t* current_frame = g_ptr_array_index(stack,stack->len - 1);
+ 
+ 	proto_tree_add_text(current_frame->tree,
+-						   tok->tvb, tok->offset, tok->len,
++						   tok->tvb, tok->offset, tok->len, "%s",
+ 						   tvb_format_text(tok->tvb,tok->offset,tok->len));
+ 
+ 	if (stack->len > 1) {
+diff -aur wireshark-1.0.2.orig/epan/filesystem.c wireshark-1.0.2/epan/filesystem.c
+--- wireshark-1.0.2.orig/epan/filesystem.c	2008-07-10 19:39:28.000000000 +0200
++++ wireshark-1.0.2/epan/filesystem.c	2009-02-08 22:54:45.000000000 +0100
+@@ -951,7 +951,7 @@
+ 	  persconffile_profile_dir = g_strdup_printf ("%s%s%s", get_profiles_dir (),
+ 						      G_DIR_SEPARATOR_S, profilename);
+ 	} else {
+-	  persconffile_profile_dir = g_strdup_printf (get_persconffile_dir_no_profile ());
++	  persconffile_profile_dir = g_strdup_printf ("%s", get_persconffile_dir_no_profile ());
+ 	}
+ 
+ 	return persconffile_profile_dir;
+diff -aur wireshark-1.0.2.orig/file.c wireshark-1.0.2/file.c
+--- wireshark-1.0.2.orig/file.c	2008-07-10 19:39:35.000000000 +0200
++++ wireshark-1.0.2/file.c	2009-02-08 22:49:39.000000000 +0100
+@@ -1131,7 +1131,6 @@
+   int               err_fileno;
+   int               i;
+   char              errmsg_errno[1024+1];
+-  gchar             err_str[2048+1];
+   const char       *errmsg;
+   gboolean          got_read_error = FALSE, got_write_error = FALSE;
+   gint64            data_offset;
+@@ -1323,8 +1322,7 @@
+ 	  errmsg = errmsg_errno;
+ 	  break;
+ 	}
+-	g_snprintf(err_str, sizeof err_str, errmsg, in_files[i].filename);
+-        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, err_str);
++        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, errmsg, in_files[i].filename);
+       }
+     }
+   }
+diff -aur wireshark-1.0.2.orig/gtk/rtp_analysis.c wireshark-1.0.2/gtk/rtp_analysis.c
+--- wireshark-1.0.2.orig/gtk/rtp_analysis.c	2008-07-10 19:37:27.000000000 +0200
++++ wireshark-1.0.2/gtk/rtp_analysis.c	2009-02-08 22:52:14.000000000 +0100
+@@ -2892,13 +2892,14 @@
+ 
+ /****************************************************************************/
+ /* append a line to clist */
++#define RTP_FIELD_MAX 40
+ static void add_to_clist(GtkCList *clist, guint32 number, guint16 seq_num,
+                          double delta, double jitter, double bandwidth, gchar *status, gboolean marker,
+                          gchar *timeStr, guint32 pkt_len, GdkColor *bg_color)
+ {
+ 	guint added_row;
+ 	gchar *data[9];
+-	gchar field[9][32];
++	gchar field[9][RTP_FIELD_MAX];
+ 	char *savelocale;
+ 	GdkColor fg_color = COLOR_FOREGROUND;
+ 
+@@ -2917,15 +2918,15 @@
+ 	/* switch to "C" locale to avoid problems with localized decimal separators
+ 		in g_snprintf("%f") functions */
+ 	setlocale(LC_NUMERIC, "C");
+-	g_snprintf(field[0], 20, "%u", number);
+-	g_snprintf(field[1], 20, "%u", seq_num);
+-	g_snprintf(field[2], 20, "%.2f", delta);
+-	g_snprintf(field[3], 20, "%.2f", jitter);
+-	g_snprintf(field[4], 20, "%.2f", bandwidth);
+-	g_snprintf(field[5], 20, "%s", marker? "SET" : "");
+-	g_snprintf(field[6], 40, "%s", status);
+-	g_snprintf(field[7], 32, "%s", timeStr);
+-	g_snprintf(field[8], 20, "%u", pkt_len);
++	g_snprintf(field[0], RTP_FIELD_MAX, "%u", number);
++	g_snprintf(field[1], RTP_FIELD_MAX, "%u", seq_num);
++	g_snprintf(field[2], RTP_FIELD_MAX, "%.2f", delta);
++	g_snprintf(field[3], RTP_FIELD_MAX, "%.2f", jitter);
++	g_snprintf(field[4], RTP_FIELD_MAX, "%.2f", bandwidth);
++	g_snprintf(field[5], RTP_FIELD_MAX, "%s", marker? "SET" : "");
++	g_snprintf(field[6], RTP_FIELD_MAX, "%s", status);
++	g_snprintf(field[7], RTP_FIELD_MAX, "%s", timeStr);
++	g_snprintf(field[8], RTP_FIELD_MAX, "%u", pkt_len);
+ 	/* restore previous locale setting */
+ 	setlocale(LC_NUMERIC, savelocale);
+ 
+diff -aur wireshark-1.0.2.orig/wiretap/netscreen.c wireshark-1.0.2/wiretap/netscreen.c
+--- wireshark-1.0.2.orig/wiretap/netscreen.c	2008-07-10 19:39:33.000000000 +0200
++++ wireshark-1.0.2/wiretap/netscreen.c	2009-02-08 22:50:15.000000000 +0100
+@@ -336,7 +336,7 @@
+ 	int	dsec, pkt_len;
+ 	char	direction[2];
+ 
+-	if (sscanf(line, "%d.%d: %[a-z0-9/:.](%[io]) len=%d:",
++	if (sscanf(line, "%d.%d: %15[a-z0-9/:.](%1[io]) len=%d:",
+ 		   &sec, &dsec, cap_int, direction, &pkt_len) != 5) {
+ 		*err = WTAP_ERR_BAD_RECORD;
+ 		*err_info = g_strdup("netscreen: Can't parse packet-header");
--- wireshark-1.0.2.orig/debian/patches/19_umask.dpatch
+++ wireshark-1.0.2/debian/patches/19_umask.dpatch
@@ -0,0 +1,43 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 19_umask.dpatch by  <andete@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad trunk~/dumpcap.c trunk/dumpcap.c
+--- trunk~/dumpcap.c	2008-03-29 18:27:02.000000000 +0100
++++ trunk/dumpcap.c	2008-04-26 10:26:43.000000000 +0200
+@@ -1645,7 +1645,7 @@
+       } else {
+         /* Try to open/create the specified file for use as a capture buffer. */
+         *save_file_fd = eth_open(capfile_name, O_RDWR|O_BINARY|O_TRUNC|O_CREAT,
+-                             0600);
++                             0666);
+       }
+     }
+     is_tempfile = FALSE;
+diff -urNad trunk~/file.c trunk/file.c
+--- trunk~/file.c	2008-03-29 18:27:02.000000000 +0100
++++ trunk/file.c	2008-04-26 10:27:16.000000000 +0200
+@@ -1155,7 +1155,7 @@
+ 
+   if (*out_filenamep != NULL) {
+     out_filename = *out_filenamep;
+-    out_fd = eth_open(out_filename, O_CREAT|O_TRUNC|O_BINARY, 0600);
++    out_fd = eth_open(out_filename, O_CREAT|O_TRUNC|O_BINARY, 0666);
+     if (out_fd == -1)
+       open_err = errno;
+   } else {
+diff -urNad trunk~/ringbuffer.c trunk/ringbuffer.c
+--- trunk~/ringbuffer.c	2008-03-29 18:27:02.000000000 +0100
++++ trunk/ringbuffer.c	2008-04-26 10:27:04.000000000 +0200
+@@ -125,7 +125,7 @@
+     return -1;
+   }
+ 
+-  rb_data.fd = eth_open(rfile->name, O_RDWR|O_BINARY|O_TRUNC|O_CREAT, 0600);
++  rb_data.fd = eth_open(rfile->name, O_RDWR|O_BINARY|O_TRUNC|O_CREAT, 0666);
+ 
+   if (rb_data.fd == -1 && err != NULL) {
+     *err = errno;
--- wireshark-1.0.2.orig/debian/patches/02_asn2deb.dpatch
+++ wireshark-1.0.2/debian/patches/02_asn2deb.dpatch
@@ -0,0 +1,392 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_asn2deb.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: asn2deb - create Debian packages from ASN.1 files
+
+@DPATCH@
+diff -urNad --exclude=CVS --exclude=.svn ./asn2deb /tmp/dpep-work.5BSR7A/wireshark-0.10.11/asn2deb
+--- ./asn2deb	1970-01-01 01:00:00.000000000 +0100
++++ /tmp/dpep-work.5BSR7A/wireshark-0.10.11/asn2deb	2005-07-17 19:37:02.000000000 +0200
+@@ -0,0 +1,219 @@
++#!/usr/bin/env python
++
++# asn2deb - quick hack by W. Borgert <debacle@debian.org> to create
++# Debian GNU/Linux packages from ASN.1 files for Wireshark.
++# Copyright 2004, W. Borgert
++
++# ASN.1 module for Wireshark, use of snacc type table:
++# Copyright 2003, Matthijs Melchior <matthijs.melchior@xs4all.nl>
++#
++# Wireshark - Network traffic analyzer
++# By Gerald Combs <gerald@wireshark.com>
++# Copyright 1998 Gerald Combs
++
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++# 
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++# 
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
++
++import getopt, os, string, sys, time
++
++scriptinfo = """asn2deb version 2004-02-17
++Copyright 2004, W. Borgert
++Free software, released under the terms of the GPL."""
++
++options = {'asn':      None,
++           'dbopts':   "",
++           'email':    "invalid@invalid.invalid",
++           'help':     0,
++           'name':     "No Name",
++           'preserve': 0,
++           'version':  0}
++
++def bootstrap():
++    """Generate Makefile.in and configure script."""
++    os.system("aclocal-1.7")
++    os.system("autoconf")
++    os.system("automake-1.7 --add-missing --copy --foreign")
++
++def create_file(filename, content, mode = None):
++    """Create a file with given content."""
++    global options
++    if options['preserve'] and os.path.isfile(filename):
++        return
++    f = open(filename, 'w')
++    f.write(content)
++    f.close()
++    if mode:
++        os.chmod(filename, mode)
++
++def create_files(version, deb, email, asn, name, iso, rfc):
++    """Create all files for the .deb build process."""
++    base = asn.lower()[:-5]
++    create_file("Makefile.am", """#
++
++BUILT_SOURCES = %s.tt
++asn1ttdir = $(datadir)/wireshark/asn1
++asn1tt_DATA = %s.tt
++
++%s.tt: """  % ((base,) * 3) + asn + """
++	snacc -u /usr/include/snacc/asn1/asn-useful.asn1 -T $@ $<
++""")
++
++    create_file("configure.ac", """AC_INIT(%s, 1.0)
++AM_INIT_AUTOMAKE
++AM_MAINTAINER_MODE
++AC_PROG_INSTALL
++SNACC=\"`type -p snacc`\"
++AC_SUBST(SNACC)
++dnl WIRESHARK_VERSION=\"%s\"
++dnl plugindir=\"$prefix/share/wireshark/asn.1\"
++dnl AC_SUBST(plugindir)
++AC_OUTPUT([Makefile])
++""" % (base, version))
++
++    if not os.path.isdir("debian"):
++        os.mkdir("debian")
++
++    create_file("debian/rules", """#!/usr/bin/make -f
++
++include /usr/share/cdbs/1/rules/debhelper.mk
++include /usr/share/cdbs/1/class/autotools.mk
++
++PREFIX=`pwd`/debian/wireshark-asn1-%s
++
++binary-post-install/wireshark-asn1-%s::
++	rm -f $(PREFIX)/usr/lib/wireshark/plugins/%s/*.a
++""" % (base, base, version), 0755)
++
++    create_file("debian/control", """Source: wireshark-asn1-%s
++Section: net
++Priority: optional
++Maintainer: %s <%s>
++Standards-Version: 3.6.1.0
++Build-Depends: snacc, autotools-dev, debhelper, cdbs
++
++Package: wireshark-asn1-%s
++Architecture: all
++Depends: wireshark (= %s)
++Description: ASN.1/BER dissector for %s
++ This package provides a type table for decoding BER (Basic Encoding
++ Rules) data over TCP or UDP, described by an ASN.1 (Abstract Syntax
++ Notation 1) file '%s.asn1'.
++""" % (base, name, email, base, deb, base, base))
++
++    create_file("debian/changelog",
++            """wireshark-asn1-%s (0.0.1-1) unstable; urgency=low
++
++  * Automatically created package.
++
++ -- %s <%s>  %s
++""" % (base, name, email, rfc + "\n    (" + iso + ")"))
++
++    create_file("debian/copyright",
++            """This package has been created automatically be asn2deb on
++%s for Debian GNU/Linux.
++
++Wireshark: http://www.wireshark.com/
++
++Copyright:
++
++GPL, as evidenced by existence of GPL license file \"COPYING\".
++(the GNU GPL may be viewed on Debian systems in
++/usr/share/common-licenses/GPL)
++""" % (iso))
++
++def get_wrs_version():
++    """Detect version of wireshark-dev package."""
++    deb = os.popen(
++        "dpkg-query -W --showformat='${Version}' wireshark-dev").read()
++    debv = string.find(deb, "-")
++    if debv == -1: debv = len(deb)
++    version = deb[string.find(deb, ":")+1:debv]
++    return version, deb
++
++def get_time():
++    """Detect current time and return ISO and RFC time string."""
++    currenttime = time.gmtime()
++    return time.strftime("%Y-%m-%d %H:%M:%S +0000", currenttime), \
++           time.strftime("%a, %d %b %Y %H:%M:%S +0000", currenttime)
++
++def main():
++    global options
++    process_opts(sys.argv)
++    iso, rfc = get_time()
++    version, deb = get_wrs_version()
++    create_files(version, deb,
++                 options['email'], options['asn'], options['name'],
++                 iso, rfc)
++    bootstrap()
++    os.system("dpkg-buildpackage " + options['dbopts'])
++
++def process_opts(argv):
++    """Process command line options."""
++    global options
++    try:
++        opts, args = getopt.getopt(argv[1:], "a:d:e:hn:pv",
++                                   ["asn=",
++                                    "dbopts=",
++                                    "email=",
++                                    "help",
++                                    "name=",
++                                    "preserve",
++                                    "version"])
++    except getopt.GetoptError:
++        usage(argv[0])
++        sys.exit(1)
++    for o, a in opts:
++        if o in ("-a", "--asn"):
++            options['asn'] = a
++        if o in ("-d", "--dbopts"):
++            options['dbopts'] = a
++        if o in ("-e", "--email"):
++            options['email'] = a
++        if o in ("-h", "--help"):
++            options['help'] = 1
++        if o in ("-n", "--name"):
++            options['name'] = a
++        if o in ("-p", "--preserve"):
++            options['preserve'] = 1
++        if o in ("-v", "--version"):
++            options['version'] = 1
++    if options['help']:
++        usage(argv[0])
++        sys.exit(0)
++    if options['version']:
++        print scriptinfo
++        sys.exit(0)
++    if not options['asn']:
++        print "mandatory ASN.1 file parameter missing"
++        sys.exit(1)
++    if not os.access(options['asn'], os.R_OK):
++        print "ASN.1 file not accessible"
++        sys.exit(1)
++
++def usage(name):
++    """Print usage help."""
++    print "Usage: " + name + " <parameters>\n" + \
++          "Parameters are\n" + \
++          "  --asn      -a asn1file, ASN.1 file to use (mandatory)\n" + \
++          "  --dbopts   -d opts,     options for dpkg-buildpackage\n" + \
++          "  --email    -e address,  use e-mail address\n" + \
++          "  --help     -h,          print help and exit\n" + \
++          "  --name     -n name,     use user name\n" + \
++          "  --preserve -p,          do not overwrite files\n" + \
++          "  --version  -v,          print version and exit\n" + \
++          "Example:\n" + \
++          name + " -e me@foo.net -a bar.asn1 -n \"My Name\" " + \
++          "-d \"-rfakeroot -uc -us\""
++if __name__ == '__main__':
++    main()
+diff -urNad --exclude=CVS --exclude=.svn ./asn2deb.dbk /tmp/dpep-work.5BSR7A/wireshark-0.10.11/asn2deb.dbk
+--- ./asn2deb.dbk	1970-01-01 01:00:00.000000000 +0100
++++ /tmp/dpep-work.5BSR7A/wireshark-0.10.11/asn2deb.dbk	2005-07-17 19:37:02.000000000 +0200
+@@ -0,0 +1,158 @@
++<?xml version='1.0' encoding='ISO-8859-1'?>
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
++  <!ENTITY command     "<command>asn2deb</command>">
++  <!ENTITY email       "<email>debacle@debian.org</email>">
++  <!ENTITY author      "W. Borgert">
++  <!ENTITY debian      "<productname>Debian GNU/Linux</productname>">
++]>
++
++<refentry>
++  <refentryinfo>
++    <address>
++      &email;
++    </address>
++    <author>
++      <firstname>W.</firstname>
++      <surname>Borgert</surname>
++    </author>
++    <copyright>
++      <year>2003</year>
++      <year>2005</year>
++      <holder>&author;</holder>
++    </copyright>
++    <date>2004-02-18</date>
++    <keywordset>
++      <keyword>ASN.1</keyword>
++      <keyword>BER</keyword>
++      <keyword>Wireshark</keyword>
++    </keywordset>
++    <revhistory>
++      <revision>
++	<revnumber>1</revnumber>
++	<date>2004-02-18</date>
++	<authorinitials>debacle</authorinitials>
++	<revremark>First version.</revremark>
++      </revision>
++    </revhistory>
++  </refentryinfo>
++  <refmeta>
++    <refentrytitle>asn2deb</refentrytitle>
++
++    <manvolnum>1</manvolnum>
++  </refmeta>
++  <refnamediv>
++    <refname>asn2deb</refname>
++
++    <refpurpose>create a Debian package for BER monitoring from ASN.1</refpurpose>
++  </refnamediv>
++  <refsynopsisdiv>
++    <cmdsynopsis>
++      &command;
++      <arg>-a <replaceable>ASN.1 file</replaceable></arg>
++      <arg>--asn=<replaceable>ASN.1 file</replaceable></arg>
++      <arg><option>-d <replaceable>opts</replaceable></option></arg>
++      <arg><option>--dbopts=<replaceable>opts</replaceable></option></arg>
++      <arg><option>-e <replaceable>address</replaceable></option></arg>
++      <arg><option>--email=<replaceable>address</replaceable></option></arg>
++      <arg><option>-h</option></arg>
++      <arg><option>--help</option></arg>
++      <arg><option>-n <replaceable>name</replaceable></option></arg>
++      <arg><option>--name=<replaceable>name</replaceable></option></arg>
++      <arg><option>-p</option></arg>
++      <arg><option>--preserve</option></arg>
++      <arg><option>-v</option></arg>
++      <arg><option>--version</option></arg>
++    </cmdsynopsis>
++  </refsynopsisdiv>
++  <refsect1>
++    <title>Description</title>
++
++    <para>This manual page documents briefly the
++      <command>asn2deb</command> command.</para>
++
++    <para>&command; takes an ASN.1 file as input and creates a Debian
++    package from it.  The package contains a loadable type table file
++    for the wireshark network analyser.  The type table is generated by
++    the ASN.1 compiler <command>snacc</command>.</para>
++  </refsect1>
++  <refsect1>
++    <title>Options</title>
++
++    <variablelist>
++      <varlistentry>
++        <term><option>-a <replaceable>ASN.1 file</replaceable></option>
++          <option>--asn=<replaceable>ASN.1 file</replaceable></option></term>
++        <listitem>
++          <para>ASN.1 file to use (mandatory).</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-d <replaceable>opts</replaceable></option>
++          <option>--dbopts=<replaceable>opts</replaceable></option></term>
++        <listitem>
++          <para>options for dpkg-buildpackage.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-e <replaceable>address</replaceable></option>
++          <option>--email=<replaceable>address</replaceable></option></term>
++        <listitem>
++          <para>use e-mail address.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-h</option>
++          <option>--help</option>
++        </term>
++        <listitem>
++          <para>print help and exit.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-n <replaceable>name</replaceable></option>
++          <option>--name=<replaceable>name</replaceable></option></term>
++        <listitem>
++          <para>use user name.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-p</option>
++          <option>--preserve</option></term>
++        <listitem>
++          <para>do not overwrite files.</para>
++        </listitem>
++      </varlistentry>
++      <varlistentry>
++        <term><option>-v</option>
++          <option>--version</option></term>
++        <listitem>
++          <para>print version and exit.</para>
++        </listitem>
++      </varlistentry>
++    </variablelist>
++
++    <para>Example:</para>
++
++    <programlisting>/usr/bin/asn2deb -e me@foo.net -a bar.asn1 \
++-n &quot;My Name&quot; -d &quot;-rfakeroot -uc -us&quot;</programlisting>
++
++  </refsect1>
++  <refsect1>
++    <title>See Also</title>
++
++    <para>A lot of tools are used, which you have to
++    <command>apt-get install</command>: wireshark-dev, python,
++    cdbs, autotools-dev, debhelper, dpkg-dev, snacc.</para>
++  </refsect1>
++
++  <refsect1>
++    <title>Copying</title>
++
++    <para>This manual page was written by &author; &email; for
++      &debian; (but may be used by others).  Permission is granted to
++      copy, distribute and/or modify this document under the terms of
++      the GNU General Public License, Version 2 or any later
++      version published by the Free Software Foundation.</para>
++  </refsect1>
++</refentry>
--- wireshark-1.0.2.orig/debian/patches/24_backport_postdissector.dpatch
+++ wireshark-1.0.2/debian/patches/24_backport_postdissector.dpatch
@@ -0,0 +1,47 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport helper function needed for security fixes from 1.0.4 <jmm@debian.org>
+
+@DPATCH@
+diff -aur wireshark-1.0.2.orig/epan/packet.c wireshark-1.0.2/epan/packet.c
+--- wireshark-1.0.2.orig/epan/packet.c	2008-07-10 19:39:28.000000000 +0200
++++ wireshark-1.0.2/epan/packet.c	2008-11-14 00:34:02.000000000 +0100
+@@ -1865,6 +1865,24 @@
+     num_of_postdissectors++;
+ }
+ 
++gboolean
++have_postdissector()
++{
++    guint i;
++    dissector_handle_t handle;
++
++    for(i = 0; i < num_of_postdissectors; i++) {
++	handle = (dissector_handle_t) g_ptr_array_index(post_dissectors,i);
++
++	if (handle->protocol != NULL
++	    && proto_is_protocol_enabled(handle->protocol)) {
++	    /* We have at least one enabled postdissector */
++	    return TRUE;
++	}
++    }
++    return FALSE;
++}
++
+ extern void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+     guint i;
+     for(i=0;i<num_of_postdissectors;i++) {
+Nur in wireshark-1.0.2/epan: packet.c~.
+diff -aur wireshark-1.0.2.orig/epan/packet.h wireshark-1.0.2/epan/packet.h
+--- wireshark-1.0.2.orig/epan/packet.h	2008-07-10 19:39:28.000000000 +0200
++++ wireshark-1.0.2/epan/packet.h	2008-11-14 00:34:27.000000000 +0100
+@@ -413,6 +413,7 @@
+  * dissector has been called.
+  */
+ extern void register_postdissector(dissector_handle_t);
++extern gboolean have_postdissector();
+ extern void call_all_postdissectors(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
+ 
+ #ifdef __cplusplus
+Nur in wireshark-1.0.2/epan: packet.h~.
--- wireshark-1.0.2.orig/debian/patches/17_clique_rm_support.dpatch
+++ wireshark-1.0.2/debian/patches/17_clique_rm_support.dpatch
@@ -0,0 +1,1185 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 17_clique_rm_support.patch.dpatch by  <sjoerd@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad wireshark-0.99.7~/configure.in wireshark-0.99.7/configure.in
+--- wireshark-0.99.7~/configure.in	2007-12-21 13:51:15.267121914 +0100
++++ wireshark-0.99.7/configure.in	2007-12-21 13:51:16.079128594 +0100
+@@ -1624,6 +1624,7 @@
+   plugins/pcli/Makefile
+   plugins/profinet/Makefile
+   plugins/rlm/Makefile
++  plugins/clique-rm/Makefile
+   plugins/rtnet/Makefile
+   plugins/rudp/Makefile
+   plugins/sbus/Makefile
+diff -urNad wireshark-0.99.7~/plugins/Makefile.am wireshark-0.99.7/plugins/Makefile.am
+--- wireshark-0.99.7~/plugins/Makefile.am	2007-12-18 02:14:52.000000000 +0100
++++ wireshark-0.99.7/plugins/Makefile.am	2007-12-21 13:51:16.079128594 +0100
+@@ -40,6 +40,7 @@
+ 	pcli \
+ 	profinet \
+ 	rlm \
++	clique-rm \
+ 	rtnet \
+ 	rudp \
+ 	sbus \
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/AUTHORS wireshark-0.99.7/plugins/clique-rm/AUTHORS
+--- wireshark-0.99.7~/plugins/clique-rm/AUTHORS	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/AUTHORS	2007-12-21 13:51:16.079128594 +0100
+@@ -0,0 +1,2 @@
++Author:
++Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/COPYING wireshark-0.99.7/plugins/clique-rm/COPYING
+--- wireshark-0.99.7~/plugins/clique-rm/COPYING	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/COPYING	2007-12-21 13:51:16.079128594 +0100
+@@ -0,0 +1,340 @@
++		    GNU GENERAL PUBLIC LICENSE
++		       Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
++     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++			    Preamble
++
++  The licenses for most software are designed to take away your
++freedom to share and change it.  By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users.  This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it.  (Some other Free Software Foundation software is covered by
++the GNU Library General Public License instead.)  You can apply it to
++your programs, too.
++
++  When we speak of free software, we are referring to freedom, not
++price.  Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++  To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++  For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have.  You must make sure that they, too, receive or can get the
++source code.  And you must show them these terms so they know their
++rights.
++
++  We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++  Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software.  If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++  Finally, any free program is threatened constantly by software
++patents.  We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary.  To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++  The precise terms and conditions for copying, distribution and
++modification follow.
++
++		    GNU GENERAL PUBLIC LICENSE
++   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++  0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License.  The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language.  (Hereinafter, translation is included without limitation in
++the term "modification".)  Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope.  The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++  1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++  2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++    a) You must cause the modified files to carry prominent notices
++    stating that you changed the files and the date of any change.
++
++    b) You must cause any work that you distribute or publish, that in
++    whole or in part contains or is derived from the Program or any
++    part thereof, to be licensed as a whole at no charge to all third
++    parties under the terms of this License.
++
++    c) If the modified program normally reads commands interactively
++    when run, you must cause it, when started running for such
++    interactive use in the most ordinary way, to print or display an
++    announcement including an appropriate copyright notice and a
++    notice that there is no warranty (or else, saying that you provide
++    a warranty) and that users may redistribute the program under
++    these conditions, and telling the user how to view a copy of this
++    License.  (Exception: if the Program itself is interactive but
++    does not normally print such an announcement, your work based on
++    the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole.  If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works.  But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++  3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++    a) Accompany it with the complete corresponding machine-readable
++    source code, which must be distributed under the terms of Sections
++    1 and 2 above on a medium customarily used for software interchange; or,
++
++    b) Accompany it with a written offer, valid for at least three
++    years, to give any third party, for a charge no more than your
++    cost of physically performing source distribution, a complete
++    machine-readable copy of the corresponding source code, to be
++    distributed under the terms of Sections 1 and 2 above on a medium
++    customarily used for software interchange; or,
++
++    c) Accompany it with the information you received as to the offer
++    to distribute corresponding source code.  (This alternative is
++    allowed only for noncommercial distribution and only if you
++    received the program in object code or executable form with such
++    an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it.  For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable.  However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++  4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License.  Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++  5. You are not required to accept this License, since you have not
++signed it.  However, nothing else grants you permission to modify or
++distribute the Program or its derivative works.  These actions are
++prohibited by law if you do not accept this License.  Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++  6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions.  You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++  7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License.  If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all.  For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices.  Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++  8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded.  In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++  9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time.  Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number.  If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation.  If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++  10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission.  For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this.  Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++			    NO WARRANTY
++
++  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++		     END OF TERMS AND CONDITIONS
++
++	    How to Apply These Terms to Your New Programs
++
++  If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these terms.
++
++  To do so, attach the following notices to the program.  It is safest
++to attach them to the start of each source file to most effectively
++convey the exclusion of warranty; and each file should have at least
++the "copyright" line and a pointer to where the full notice is found.
++
++    <one line to give the program's name and a brief idea of what it does.>
++    Copyright (C) <year>  <name of author>
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License as published by
++    the Free Software Foundation; either version 2 of the License, or
++    (at your option) any later version.
++
++    This program is distributed in the hope that it will be useful,
++    but WITHOUT ANY WARRANTY; without even the implied warranty of
++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++    GNU General Public License for more details.
++
++    You should have received a copy of the GNU General Public License
++    along with this program; if not, write to the Free Software
++    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++
++
++Also add information on how to contact you by electronic and paper mail.
++
++If the program is interactive, make it output a short notice like this
++when it starts in an interactive mode:
++
++    Gnomovision version 69, Copyright (C) year  name of author
++    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
++    This is free software, and you are welcome to redistribute it
++    under certain conditions; type `show c' for details.
++
++The hypothetical commands `show w' and `show c' should show the appropriate
++parts of the General Public License.  Of course, the commands you use may
++be called something other than `show w' and `show c'; they could even be
++mouse-clicks or menu items--whatever suits your program.
++
++You should also get your employer (if you work as a programmer) or your
++school, if any, to sign a "copyright disclaimer" for the program, if
++necessary.  Here is a sample; alter the names:
++
++  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
++  `Gnomovision' (which makes passes at compilers) written by James Hacker.
++
++  <signature of Ty Coon>, 1 April 1989
++  Ty Coon, President of Vice
++
++This General Public License does not permit incorporating your program into
++proprietary programs.  If your program is a subroutine library, you may
++consider it more useful to permit linking proprietary applications with the
++library.  If this is what you want to do, use the GNU Library General
++Public License instead of this License.
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/Makefile.am wireshark-0.99.7/plugins/clique-rm/Makefile.am
+--- wireshark-0.99.7~/plugins/clique-rm/Makefile.am	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/Makefile.am	2007-12-21 13:51:16.079128594 +0100
+@@ -0,0 +1,124 @@
++# Makefile.am
++# Automake file for Cisco SS7 Redundant Link Management plugin
++# Copyright 2004, Duncan Sargeant <dunc-ethereal@rcpt.to>
++#
++# $Id: Makefile.am 21961 2007-05-27 18:35:55Z guy $
++#
++# Wireshark - Network traffic analyzer
++# By Gerald Combs <gerald@wireshark.org>
++# Copyright 1998 Gerald Combs
++# 
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++# 
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++# 
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
++#
++
++INCLUDES = -I$(top_srcdir) -I$(includedir)
++
++include Makefile.common
++
++if HAVE_WARNINGS_AS_ERRORS
++AM_CFLAGS = -Werror
++endif
++
++plugindir = @plugindir@
++
++plugin_LTLIBRARIES = clique-rm.la
++clique_rm_la_SOURCES = \
++	plugin.c \
++	moduleinfo.h \
++	$(DISSECTOR_SRC) \
++	$(DISSECTOR_INCLUDES)
++clique_rm_la_LDFLAGS = -module -avoid-version
++clique_rm_la_LIBADD = @PLUGIN_LIBS@
++
++# Libs must be cleared, or else libtool won't create a shared module.
++# If your module needs to be linked against any particular libraries,
++# add them here.
++LIBS =
++
++#
++# Build plugin.c, which contains the plugin version[] string, a
++# function plugin_register() that calls the register routines for all
++# protocols, and a function plugin_reg_handoff() that calls the handoff
++# registration routines for all protocols.
++#
++# We do this by scanning sources.  If that turns out to be too slow,
++# maybe we could just require every .o file to have an register routine
++# of a given name (packet-aarp.o -> proto_register_aarp, etc.).
++#
++# Formatting conventions:  The name of the proto_register_* routines an
++# proto_reg_handoff_* routines must start in column zero, or must be
++# preceded only by "void " starting in column zero, and must not be
++# inside #if.
++#
++# DISSECTOR_SRC is assumed to have all the files that need to be scanned.
++#
++# For some unknown reason, having a big "for" loop in the Makefile
++# to scan all the files doesn't work with some "make"s; they seem to
++# pass only the first few names in the list to the shell, for some
++# reason.
++#
++# Therefore, we have a script to generate the plugin.c file.
++# The shell script runs slowly, as multiple greps and seds are run
++# for each input file; this is especially slow on Windows.  Therefore,
++# if Python is present (as indicated by PYTHON being defined), we run
++# a faster Python script to do that work instead.
++#
++# The first argument is the directory in which the source files live.
++# The second argument is "plugin", to indicate that we should build
++# a plugin.c file for a plugin.
++# All subsequent arguments are the files to scan.
++#
++plugin.c: $(DISSECTOR_SRC) $(top_srcdir)/tools/make-dissector-reg \
++    $(top_srcdir)/tools/make-dissector-reg.py
++	@if test -n $(PYTHON); then \
++		echo Making plugin.c with python ; \
++		$(PYTHON) $(top_srcdir)/tools/make-dissector-reg.py $(srcdir) \
++		    plugin $(DISSECTOR_SRC) ; \
++	else \
++		echo Making plugin.c with shell script ; \
++		$(top_srcdir)/tools/make-dissector-reg $(srcdir) \
++		    $(plugin_src) plugin $(DISSECTOR_SRC) ; \
++	fi
++
++#
++# Currently plugin.c can be included in the distribution because
++# we always build all protocol dissectors. We used to have to check
++# whether or not to build the snmp dissector. If we again need to
++# variably build something, making plugin.c non-portable, uncomment
++# the dist-hook line below.
++#
++# Oh, yuk.  We don't want to include "plugin.c" in the distribution, as
++# its contents depend on the configuration, and therefore we want it
++# to be built when the first "make" is done; however, Automake insists
++# on putting *all* source into the distribution.
++#
++# We work around this by having a "dist-hook" rule that deletes
++# "plugin.c", so that "dist" won't pick it up.
++#
++#dist-hook:
++#	@rm -f $(distdir)/plugin.c
++
++CLEANFILES = \
++	*~
++
++MAINTAINERCLEANFILES = \
++	Makefile.in	\
++	plugin.c
++
++EXTRA_DIST = \
++	Makefile.common		\
++	Makefile.nmake		\
++	moduleinfo.nmake	\
++	plugin.rc.in
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/Makefile.common wireshark-0.99.7/plugins/clique-rm/Makefile.common
+--- wireshark-0.99.7~/plugins/clique-rm/Makefile.common	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/Makefile.common	2007-12-21 13:51:16.079128594 +0100
+@@ -0,0 +1,31 @@
++# Makefile.common for Cisco SS7 Redundant Link Management plugin
++#     Contains the stuff from Makefile.am and Makefile.nmake that is
++#     a) common to both files and
++#     b) portable between both files
++#
++# $Id: Makefile.common 18197 2006-05-21 05:12:17Z sahlberg $
++#
++# Wireshark - Network traffic analyzer
++# By Gerald Combs <gerald@wireshark.org>
++# Copyright 1998 Gerald Combs
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
++
++# the name of the plugin
++PLUGIN_NAME = clique-rm
++
++# the dissector sources (without any helpers)
++DISSECTOR_SRC = \
++	packet-clique-rm.c
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/Makefile.nmake wireshark-0.99.7/plugins/clique-rm/Makefile.nmake
+--- wireshark-0.99.7~/plugins/clique-rm/Makefile.nmake	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/Makefile.nmake	2007-12-21 13:51:16.079128594 +0100
+@@ -0,0 +1,99 @@
++# Makefile.nmake
++# nmake file for Wireshark plugin
++#
++# $Id: Makefile.nmake 22696 2007-08-27 22:56:27Z wmeier $
++#
++
++include ..\..\config.nmake
++include moduleinfo.nmake
++
++include Makefile.common
++
++CFLAGS=/WX /DHAVE_CONFIG_H /I../.. /I../../wiretap $(GLIB_CFLAGS) \
++	/I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS)
++
++.c.obj::
++	$(CC) $(CFLAGS) -Fd.\ -c $<
++	
++LDFLAGS = $(PLUGIN_LDFLAGS)
++
++!IFDEF ENABLE_LIBWIRESHARK
++LINK_PLUGIN_WITH=..\..\epan\libwireshark.lib
++CFLAGS=/DHAVE_WIN32_LIBWIRESHARK_LIB /D_NEED_VAR_IMPORT_ $(CFLAGS)
++
++DISSECTOR_OBJECTS = $(DISSECTOR_SRC:.c=.obj)
++
++DISSECTOR_SUPPORT_OBJECTS = $(DISSECTOR_SUPPORT_SRC:.c=.obj)
++
++OBJECTS = $(DISSECTOR_OBJECTS) $(DISSECTOR_SUPPORT_OBJECTS) plugin.obj
++
++RESOURCE=$(PLUGIN_NAME).res
++
++all: $(PLUGIN_NAME).dll
++
++$(PLUGIN_NAME).rc : moduleinfo.nmake
++	sed -e s/@PLUGIN_NAME@/$(PLUGIN_NAME)/ \
++	-e s/@RC_MODULE_VERSION@/$(RC_MODULE_VERSION)/ \
++	-e s/@RC_VERSION@/$(RC_VERSION)/ \
++	-e s/@MODULE_VERSION@/$(MODULE_VERSION)/ \
++	-e s/@PACKAGE@/$(PACKAGE)/ \
++	-e s/@VERSION@/$(VERSION)/ \
++	-e s/@MSVC_VARIANT@/$(MSVC_VARIANT)/ \
++	< plugin.rc.in > $@
++
++$(PLUGIN_NAME).dll $(PLUGIN_NAME).exp $(PLUGIN_NAME).lib : $(OBJECTS) $(LINK_PLUGIN_WITH) $(RESOURCE)
++	link -dll /out:$(PLUGIN_NAME).dll $(LDFLAGS) $(OBJECTS) $(LINK_PLUGIN_WITH) \
++	$(GLIB_LIBS) $(RESOURCE)
++
++#
++# Build plugin.c, which contains the plugin version[] string, a
++# function plugin_register() that calls the register routines for all
++# protocols, and a function plugin_reg_handoff() that calls the handoff
++# registration routines for all protocols.
++#
++# We do this by scanning sources.  If that turns out to be too slow,
++# maybe we could just require every .o file to have an register routine
++# of a given name (packet-aarp.o -> proto_register_aarp, etc.).
++#
++# Formatting conventions:  The name of the proto_register_* routines an
++# proto_reg_handoff_* routines must start in column zero, or must be
++# preceded only by "void " starting in column zero, and must not be
++# inside #if.
++#
++# DISSECTOR_SRC is assumed to have all the files that need to be scanned.
++#
++# For some unknown reason, having a big "for" loop in the Makefile
++# to scan all the files doesn't work with some "make"s; they seem to
++# pass only the first few names in the list to the shell, for some
++# reason.
++#
++# Therefore, we have a script to generate the plugin.c file.
++# The shell script runs slowly, as multiple greps and seds are run
++# for each input file; this is especially slow on Windows.  Therefore,
++# if Python is present (as indicated by PYTHON being defined), we run
++# a faster Python script to do that work instead.
++#
++# The first argument is the directory in which the source files live.
++# The second argument is "plugin", to indicate that we should build
++# a plugin.c file for a plugin.
++# All subsequent arguments are the files to scan.
++#
++plugin.c: $(DISSECTOR_SRC) ../../tools/make-dissector-reg.py ../../tools/make-dissector-reg
++!IFDEF PYTHON
++	@echo Making plugin.c (using python)
++	@$(PYTHON) "../../tools/make-dissector-reg.py" . plugin $(DISSECTOR_SRC)
++!ELSE
++	@echo Making plugin.c (using sh)
++	@$(SH) ../../tools/make-dissector-reg . plugin $(DISSECTOR_SRC)
++!ENDIF
++
++!ENDIF
++
++clean:
++	rm -f $(OBJECTS) $(RESOURCE) plugin.c *.pdb \
++	    $(PLUGIN_NAME).dll $(PLUGIN_NAME).dll.manifest $(PLUGIN_NAME).lib \
++	    $(PLUGIN_NAME).exp $(PLUGIN_NAME).rc 
++
++distclean: clean
++
++maintainer-clean: distclean
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/moduleinfo.h wireshark-0.99.7/plugins/clique-rm/moduleinfo.h
+--- wireshark-0.99.7~/plugins/clique-rm/moduleinfo.h	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/moduleinfo.h	2007-12-21 13:51:16.083125699 +0100
+@@ -0,0 +1,16 @@
++/* Included *after* config.h, in order to re-define these macros */
++
++#ifdef PACKAGE
++#undef PACKAGE
++#endif
++
++/* Name of package */
++#define PACKAGE "clique-rm"
++
++
++#ifdef VERSION
++#undef VERSION
++#endif
++
++/* Version number of package */
++#define VERSION "0.0.1"
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/moduleinfo.nmake wireshark-0.99.7/plugins/clique-rm/moduleinfo.nmake
+--- wireshark-0.99.7~/plugins/clique-rm/moduleinfo.nmake	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/moduleinfo.nmake	2007-12-21 13:51:16.083125699 +0100
+@@ -0,0 +1,28 @@
++#
++# $Id: moduleinfo.nmake 20170 2006-12-19 22:27:31Z jake $
++#
++
++# The name
++PACKAGE=clique-rm
++
++# The version
++MODULE_VERSION_MAJOR=0
++MODULE_VERSION_MINOR=0
++MODULE_VERSION_MICRO=1
++MODULE_VERSION_EXTRA=0
++
++#
++# The RC_VERSION should be comma-separated, not dot-separated, 
++# as per Graham Bloice's message in
++#
++#	http://www.ethereal.com/lists/ethereal-dev/200303/msg00283.html
++#
++# "The RC_VERSION variable in config.nmake should be comma separated. 
++# This allows the resources to be built correctly and the version
++# number to be correctly displayed in the explorer properties dialog
++# for the executables, and XP's tooltip, rather than 0.0.0.0."
++#
++
++MODULE_VERSION=$(MODULE_VERSION_MAJOR).$(MODULE_VERSION_MINOR).$(MODULE_VERSION_MICRO).$(MODULE_VERSION_EXTRA)
++RC_MODULE_VERSION=$(MODULE_VERSION_MAJOR),$(MODULE_VERSION_MINOR),$(MODULE_VERSION_MICRO),$(MODULE_VERSION_EXTRA)
++
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/packet-clique-rm.c wireshark-0.99.7/plugins/clique-rm/packet-clique-rm.c
+--- wireshark-0.99.7~/plugins/clique-rm/packet-clique-rm.c	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/packet-clique-rm.c	2007-12-21 13:51:16.083125699 +0100
+@@ -0,0 +1,446 @@
++/* packet-clique_rm.c
++ *
++ * $Id$
++ *
++ * Routines for clique reliable multicast dissector
++ * Copyright 2007, Collabora Ltd.
++ *   @author: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
++ * Based on code from  Wireshark - Network traffic analyzer
++ * By Gerald Combs <gerald@wireshark.org>
++ * Copyright 1998 Gerald Combs
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ * 
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++#include <glib.h>
++#include <epan/packet.h>
++
++/* Initialize the protocol and registered fields */
++static int proto_clique_rm = -1;
++
++static int hf_clique_rm_version = -1;
++static int hf_clique_rm_type = -1;
++static int hf_clique_rm_sender = -1;
++static int hf_clique_rm_packet_id = -1;
++static int hf_clique_rm_data_flags = -1;
++static int hf_clique_rm_data_size = -1;
++static int hf_clique_rm_data_stream_id = -1;
++static int hf_clique_rm_data_data = -1;
++static int hf_clique_rm_whois_request_id = -1;
++static int hf_clique_rm_whois_reply_name = -1;
++static int hf_clique_rm_repair_request_sender_id = -1;
++static int hf_clique_rm_repair_request_packet_id = -1;
++
++/* Initialize the subtree pointers */
++static gint ett_clique_rm = -1;
++static gint ett_clique_rm_data = -1;
++static gint ett_clique_rm_depends = -1;
++static gint ett_clique_rm_failures = -1;
++static gint ett_clique_rm_attempt_join = -1;
++static gint ett_clique_rm_join = -1;
++
++/* Packet types */
++typedef enum {
++  /* Unreliable packets */
++  PACKET_TYPE_WHOIS_REQUEST = 0,
++  PACKET_TYPE_WHOIS_REPLY,
++  PACKET_TYPE_REPAIR_REQUEST,
++  PACKET_TYPE_SESSION,
++  /* Reliable packets */
++  FIRST_RELIABLE_PACKET = 0xf,
++  PACKET_TYPE_DATA = FIRST_RELIABLE_PACKET,
++  /* No data just acknowledgement */
++  PACKET_TYPE_NO_DATA,
++  /* Some nodes failed */
++  PACKET_TYPE_FAILURE,
++  /* Start a joining attempt */
++  PACKET_TYPE_ATTEMPT_JOIN,
++  /* The real join */
++  PACKET_TYPE_JOIN,
++  /* Leaving now, bye */
++  PACKET_TYPE_BYE,
++  PACKET_TYPE_INVALID
++} GibberRMulticastPacketType;
++
++#define IS_RELIABLE(type) (type >= FIRST_RELIABLE_PACKET)
++
++static gchar *
++type_to_str (guint8 type)
++{
++  switch (type)
++    {
++       case PACKET_TYPE_WHOIS_REQUEST:
++         return "Whois request";
++       case PACKET_TYPE_WHOIS_REPLY:
++         return "Whois reply";
++       case PACKET_TYPE_REPAIR_REQUEST:
++         return "Repair request";
++       case PACKET_TYPE_SESSION:
++         return "Session";
++       case PACKET_TYPE_DATA:
++         return "Data";
++       /* No data just acknowledgement */
++       case PACKET_TYPE_NO_DATA:
++         return "No data";
++       /* Some nodes failed */
++       case PACKET_TYPE_FAILURE:
++         return "Failure";
++       /* Start a joining attempt */
++       case PACKET_TYPE_ATTEMPT_JOIN:
++         return "Attempt join";
++       /* The real join */
++       case PACKET_TYPE_JOIN:
++         return "Join";
++       /* Leaving now, bye */
++       case PACKET_TYPE_BYE:
++         return "Bye";
++    }
++  return "Unknown";
++}
++
++static gsize
++dissect_sender_array (proto_tree *clique_rm_tree, gchar *header,
++    tvbuff_t *tvb, gsize offset)
++{
++  guint8 count;
++  gsize len;
++  proto_item *ti;
++  proto_tree *tree;
++
++
++  count = tvb_get_guint8(tvb, offset);
++  len = 1 + 4 * count;
++  ti = proto_tree_add_text (clique_rm_tree, tvb, offset, len ,
++             "%s (%d)", header, count);
++  tree =  proto_item_add_subtree (ti, ett_clique_rm_failures);
++  offset++;
++
++  for (; count > 0 ; count--)
++    {
++      guint32 sender;
++      sender = tvb_get_ntohl (tvb, offset);
++      proto_tree_add_text (tree, tvb, offset, 4, "Sender: %x", sender);
++      offset += 4;
++    }
++  return len;
++}
++
++static void
++dissect_data_packet (proto_tree *clique_rm_tree, tvbuff_t *tvb, gsize offset)
++{
++  proto_item *ti;
++  proto_tree *tree;
++
++  ti = proto_tree_add_text (clique_rm_tree, tvb, offset, -1, "Data");
++  tree =  proto_item_add_subtree (ti, ett_clique_rm_data);
++
++  proto_tree_add_item(tree, hf_clique_rm_data_flags, tvb, offset, 1, FALSE);
++  offset += 1;
++
++  proto_tree_add_item(tree, hf_clique_rm_data_stream_id, tvb, offset, 2,
++      FALSE);
++  offset += 2;
++
++  proto_tree_add_item(tree, hf_clique_rm_data_size, tvb, offset, 4, FALSE);
++  offset += 4;
++
++
++  proto_tree_add_item(tree, hf_clique_rm_data_data, tvb, offset,
++      tvb_length_remaining(tvb, offset), FALSE);
++}
++
++static gsize
++dissect_depends (proto_tree *clique_rm_tree, tvbuff_t *tvb, gsize offset)
++{
++  proto_item *ti;
++  proto_tree *tree;
++  guint8 count;
++  gsize len;
++
++  count = tvb_get_guint8 (tvb, offset);
++  len = 1 + count * 8;
++
++  ti = proto_tree_add_text (clique_rm_tree, tvb, offset, 1 + count * 8,
++      "Depends (%d)", count);
++  offset += 1;
++
++  tree =  proto_item_add_subtree (ti, ett_clique_rm_depends);
++  for ( ; count > 0 ; count--)
++    {
++      guint32 d;
++      guint32 d_id;
++
++      d = tvb_get_ntohl (tvb, offset);
++      d_id = tvb_get_ntohl (tvb, offset + 4);
++      proto_tree_add_text (tree, tvb, offset, 8,
++        "Sender: %x Packet id: %x", d, d_id);
++      offset += 8;
++    }
++
++  return len;
++}
++
++/* Code to actually dissect the packets */
++static void
++dissect_reliable_packet (proto_tree *clique_rm_tree, guint8 type,
++    tvbuff_t *tvb, gsize offset)
++{
++  proto_tree_add_item(clique_rm_tree, hf_clique_rm_packet_id, tvb, offset, 4,
++     FALSE);
++  offset += 4;
++
++  offset += dissect_depends (clique_rm_tree, tvb, offset);
++
++  switch (type)
++    {
++       case PACKET_TYPE_DATA:
++         dissect_data_packet (clique_rm_tree, tvb, offset);
++         break;
++       case PACKET_TYPE_NO_DATA:
++         break;
++       case PACKET_TYPE_FAILURE:
++         dissect_sender_array (clique_rm_tree, "Failures", tvb, offset);
++         break;
++       case PACKET_TYPE_ATTEMPT_JOIN:
++         dissect_sender_array (clique_rm_tree, "New attempt join senders", tvb,
++             offset);
++         break;
++       case PACKET_TYPE_JOIN:
++         dissect_sender_array (clique_rm_tree, "Join failures", tvb, offset);
++         break;
++       case PACKET_TYPE_BYE:
++         break;
++      default:
++        break;
++    }
++}
++
++static void
++dissect_unreliable_packet (proto_tree *clique_rm_tree, guint8 type,
++  tvbuff_t *tvb, gsize offset)
++{
++  guint8 len;
++
++  switch (type)
++    {
++      case PACKET_TYPE_WHOIS_REQUEST:
++        proto_tree_add_item(clique_rm_tree,
++          hf_clique_rm_whois_request_id, tvb, offset, 4, FALSE);
++        break;
++      case PACKET_TYPE_WHOIS_REPLY:
++        len = tvb_get_guint8 (tvb, offset);
++        proto_tree_add_text (clique_rm_tree, tvb, offset, 1,
++            "Whois reply name length: %d", len);
++        offset += 1;
++
++        proto_tree_add_item(clique_rm_tree,
++          hf_clique_rm_whois_reply_name, tvb, offset, len, FALSE);
++        break;
++      case PACKET_TYPE_REPAIR_REQUEST:
++        proto_tree_add_item(clique_rm_tree,
++          hf_clique_rm_repair_request_sender_id, tvb, offset, 4, FALSE);
++        offset += 4;
++
++        proto_tree_add_item(clique_rm_tree,
++          hf_clique_rm_repair_request_packet_id, tvb, offset, 4, FALSE);
++        break;
++      case PACKET_TYPE_SESSION:
++        dissect_depends (clique_rm_tree, tvb, offset);
++        break;
++      default:
++        break;
++    }
++}
++
++
++static gboolean
++dissect_clique_rm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
++{
++  guint8 version = 0;
++  guint8 type = 0;
++  gsize offset = 0;
++
++  if (tvb_length (tvb) < 12)
++    return FALSE;
++
++  if (tvb_strneql (tvb, offset, "Clique", 6))
++    return FALSE;
++  offset += 6;
++
++  version = tvb_get_guint8 (tvb, offset);
++  if (version != 1)
++    return FALSE;
++  offset++;
++
++  type = tvb_get_guint8 (tvb, offset);
++  offset++;
++
++  if (check_col(pinfo->cinfo, COL_PROTOCOL))
++    col_set_str(pinfo->cinfo, COL_PROTOCOL, "Clique-rm");
++
++  if (check_col(pinfo->cinfo, COL_INFO))
++    col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
++        type_to_str (type));
++
++  if (tree) {
++    proto_item *ti = NULL;
++    proto_tree *clique_rm_tree = NULL;
++
++    /* rewind back to just behind the prefix */
++    offset = 6;
++
++    ti = proto_tree_add_item(tree, proto_clique_rm, tvb, 0, -1, FALSE);
++    clique_rm_tree = proto_item_add_subtree(ti, ett_clique_rm);
++
++    proto_tree_add_item(clique_rm_tree, hf_clique_rm_version, tvb, offset, 1,
++        FALSE);
++    offset++;
++
++    ti = proto_tree_add_item(clique_rm_tree, hf_clique_rm_type, tvb, offset, 1,
++       FALSE);
++    proto_item_append_text(ti, ", %s", type_to_str (type));
++    offset++;
++
++   if (check_col(pinfo->cinfo, COL_INFO))
++     col_append_fstr(pinfo->cinfo, COL_INFO, ", sender: 0x%x",
++       tvb_get_ntohl (tvb, offset));
++
++    proto_tree_add_item(clique_rm_tree, hf_clique_rm_sender, tvb, offset,
++        4, FALSE);
++    offset += 4;
++
++    if (IS_RELIABLE(type)) {
++      if (check_col(pinfo->cinfo, COL_INFO))
++        col_append_fstr(pinfo->cinfo, COL_INFO, ", id: 0x%x",
++          tvb_get_ntohl (tvb, offset));
++
++      dissect_reliable_packet(clique_rm_tree, type, tvb, offset);
++    } else {
++      dissect_unreliable_packet(clique_rm_tree, type, tvb, offset);
++    }
++  }
++
++  return TRUE;
++}
++
++
++/* Register the protocol with Wireshark */
++
++/* this format is require because a script is used to build the C function
++   that calls all the protocol registration.
++*/
++
++void
++proto_reg_handoff_clique_rm(void)
++{
++	heur_dissector_add("udp", dissect_clique_rm, proto_clique_rm);
++}
++
++void
++proto_register_clique_rm(void)
++{
++
++/* Setup list of header fields  See Section 1.6.1 for details*/
++	static hf_register_info hf[] = {
++		{ &hf_clique_rm_version,
++			{ "Version",           "clique_rm.version",
++			FT_UINT8, BASE_DEC, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_type,
++			{ "Type",           "clique_rm.type",
++			FT_UINT8, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_sender,
++			{ "Sender",           "clique_rm.sender",
++			FT_UINT32, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_packet_id,
++			{ "Packet id",           "clique_rm.packet_id",
++			FT_UINT32, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_data_flags,
++			{ "Data flags",           "clique_rm.data.flags",
++			FT_UINT8, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_data_size,
++			{ "Data total size",           "clique_rm.data.size",
++			FT_UINT32, BASE_DEC, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_data_stream_id,
++			{ "Data stream id",           "clique_rm.data.stream_id",
++			FT_UINT16, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_data_data,
++			{ "Raw data",           "clique_rm.data.data",
++			FT_STRINGZ, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_whois_request_id,
++			{ "Whois request id",           "clique_rm.whois_request.id",
++			FT_UINT32, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_whois_reply_name,
++			{ "Whois reply name",           "clique_rm.whois_reply.name",
++			FT_STRINGZ, BASE_DEC, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_repair_request_sender_id,
++			{ "Repair request for sender",
++			  "clique_rm.repair_request.sender_id",
++			FT_UINT32, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++		{ &hf_clique_rm_repair_request_packet_id,
++			{ "Repair request for packet",
++			  "clique_rm.repair_request.packet_id",
++			FT_UINT32, BASE_HEX, NULL, 0x0,
++			"", HFILL }
++		},
++	};
++
++/* Setup protocol subtree array */
++	static gint *ett[] = {
++		&ett_clique_rm,
++		&ett_clique_rm_depends,
++		&ett_clique_rm_data,
++		&ett_clique_rm_failures,
++		&ett_clique_rm_attempt_join,
++		&ett_clique_rm_join,
++	};
++
++/* Register the protocol name and description */
++	proto_clique_rm = proto_register_protocol(
++      "Clique Reliable Multicast Protocol", "Clique-rm", "clique-rm");
++
++/* Required function calls to register the header fields and subtrees used */
++	proto_register_field_array(proto_clique_rm, hf, array_length(hf));
++	proto_register_subtree_array(ett, array_length(ett));
++}
+diff -urNad wireshark-0.99.7~/plugins/clique-rm/plugin.rc.in wireshark-0.99.7/plugins/clique-rm/plugin.rc.in
+--- wireshark-0.99.7~/plugins/clique-rm/plugin.rc.in	1970-01-01 01:00:00.000000000 +0100
++++ wireshark-0.99.7/plugins/clique-rm/plugin.rc.in	2007-12-21 13:51:16.083125699 +0100
+@@ -0,0 +1,34 @@
++#include "winver.h"
++
++VS_VERSION_INFO VERSIONINFO
++ FILEVERSION @RC_MODULE_VERSION@
++ PRODUCTVERSION @RC_VERSION@,0
++ FILEFLAGSMASK 0x0L
++#ifdef _DEBUG
++ FILEFLAGS VS_FF_PRERELEASE+VS_FF_DEBUG
++#else
++ FILEFLAGS VS_FF_PRERELEASE
++#endif
++ FILEOS VOS_NT_WINDOWS32
++ FILETYPE VFT_DLL
++BEGIN
++    BLOCK "StringFileInfo"
++    BEGIN
++        BLOCK "040904b0"
++        BEGIN
++            VALUE "CompanyName", "Collabora Ltd.\0"
++            VALUE "FileDescription", "@PACKAGE@ dissector\0"
++            VALUE "FileVersion", "@MODULE_VERSION@\0"
++            VALUE "InternalName", "@PACKAGE@ @MODULE_VERSION@\0"
++            VALUE "LegalCopyright", " Copyright � 2007 Collabora Ltd. Copyright � 1998 Gerald Combs <gerald@wireshark.org>, Gilbert Ramirez <gram@alumni.rice.edu> and others\0"
++            VALUE "OriginalFilename", "@PLUGIN_NAME@.dll\0"
++            VALUE "ProductName", "Wireshark\0"
++            VALUE "ProductVersion", "@VERSION@\0"
++            VALUE "Comments", "Build with @MSVC_VARIANT@\0"
++        END
++    END
++    BLOCK "VarFileInfo"
++    BEGIN
++        VALUE "Translation", 0x409, 1200
++    END
++END
--- wireshark-1.0.2.orig/debian/patches/22_CVE-2008-3146_3932.dpatch
+++ wireshark-1.0.2/debian/patches/22_CVE-2008-3146_3932.dpatch
@@ -0,0 +1,7433 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 22_CVE-2008-3146_3932.dpatch by  <andete@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad lenny~/epan/dissectors/packet-ncp2222.inc lenny/epan/dissectors/packet-ncp2222.inc
+--- lenny~/epan/dissectors/packet-ncp2222.inc	2008-07-10 19:39:26.000000000 +0200
++++ lenny/epan/dissectors/packet-ncp2222.inc	2008-09-16 19:43:37.000000000 +0200
+@@ -19,7 +19,7 @@
+  * Portions Copyright (c) Gilbert Ramirez 2000-2002
+  * Portions Copyright (c) Novell, Inc. 2000-2003
+  *
+- * $Id: packet-ncp2222.inc 24522 2008-03-01 13:58:15Z stig $
++ * $Id$
+  *
+  * Wireshark - Network traffic analyzer
+  * By Gerald Combs <gerald@wireshark.org>
+@@ -43,13 +43,13 @@
+ #define NCP_PACKET_INIT_COUNT	200
+ #define PROTO_LENGTH_UNTIL_END -1
+ 
+-gboolean        nds_defragment = TRUE;
+-gboolean        nds_echo_eid = TRUE;
+-gboolean        ncp_echo_err = TRUE;
+-gboolean        ncp_echo_conn = FALSE;
++gboolean        nds_defragment  = TRUE;
++gboolean        nds_echo_eid    = TRUE;
++gboolean        ncp_echo_err    = TRUE;
++gboolean        ncp_echo_conn   = FALSE;
+ gboolean        ncp_echo_server = TRUE;
+-gboolean        ncp_echo_file = FALSE;
+-gboolean        ncp_newstyle = TRUE;
++gboolean        ncp_echo_file   = FALSE;
++gboolean        ncp_newstyle    = TRUE;
+ 
+ extern dissector_handle_t nds_data_handle;
+ typedef struct {
+@@ -60,6 +60,7 @@
+         guint32         nds_length;
+         guint32         nds_frag;
+         gboolean        nds_fragmented;
++        guint8          sequence;
+ } frag_info;
+ 
+ frag_info           frags[100];
+@@ -79,204 +80,204 @@
+ 	"segments"
+ };
+ 
+-#define NDS_TAG_NO_SUCH_ENTRY		    0x00000000
+-#define NDS_TAG_LOCAL_ENTRY		        0x00000001
+-#define NDS_TAG_REMOTE_ENTRY		    0x00000002
+-#define NDS_TAG_ALIAS_ENTRY		        0x00000003
+-#define NDS_TAG_REFERRAL_INFORMATION	0x00000004
+-#define NDS_TAG_ENTRY_AND_REFERRALS	    0x00000006
++#define NDS_TAG_NO_SUCH_ENTRY           0x00000000
++#define NDS_TAG_LOCAL_ENTRY             0x00000001
++#define NDS_TAG_REMOTE_ENTRY            0x00000002
++#define NDS_TAG_ALIAS_ENTRY             0x00000003
++#define NDS_TAG_REFERRAL_INFORMATION    0x00000004
++#define NDS_TAG_ENTRY_AND_REFERRALS     0x00000006
+ 
+ /* Search objects */
+-#define NDS_SEARCH_ENTRY 				    0
+-#define NDS_SEARCH_SUBORDINATES		        1
+-#define NDS_SEARCH_SUBTREE				    2
+-#define NDS_SEARCH_PARTITION			    3
++#define NDS_SEARCH_ENTRY                         0
++#define NDS_SEARCH_SUBORDINATES                  1
++#define NDS_SEARCH_SUBTREE                       2
++#define NDS_SEARCH_PARTITION                     3
+ 
+-/* Search Referal Types */
+-#define NDS_ALIAS_REFERRAL				    0
+-#define NDS_PARTITION_REFERRAL			    1
++/* Search Referral Types */
++#define NDS_ALIAS_REFERRAL                       0
++#define NDS_PARTITION_REFERRAL                   1
+ 
+ /* Search Filter Types */
+-#define NDS_SEARCH_ITEM						0
+-#define NDS_SEARCH_OR						1
+-#define NDS_SEARCH_AND						2
+-#define NDS_SEARCH_NOT						3
++#define NDS_SEARCH_ITEM                          0
++#define NDS_SEARCH_OR                            1
++#define NDS_SEARCH_AND                           2
++#define NDS_SEARCH_NOT                           3
+ 
+ /* Search Operators */
+-#define NDS_SEARCH_EQUAL					7
+-#define NDS_SEARCH_GREATER_OR_EQUAL		    8
+-#define NDS_SEARCH_LESS_OR_EQUAL			9
+-#define NDS_SEARCH_APPROX					10
+-#define NDS_SEARCH_PRESENT					15
+-#define NDS_SEARCH_RDN						16
+-#define NDS_SEARCH_BASE_CLASS				17
+-#define NDS_SEARCH_MODIFICATION_GE		    18	/* Deprecated, use DS_SEARCH_ENTRY_MTS_GE */
+-#define NDS_SEARCH_VALUE_TIME_GE			19	/* Deprecated, use DS_SEARCH_VALUE_MTS_GE */
+-#define NDS_SEARCH_REFERENCES				20
+-#define NDS_SEARCH_DN_IN_VALUE				21
+-#define NDS_SEARCH_SCHEMA_IN_VALUE		    22
+-#define NDS_SEARCH_ENTRY_FLAGS				23
+-#define NDS_SEARCH_ENTRY_HAS_FLAG			24
+-#define NDS_SEARCH_VALUE_FLAGS				25
+-#define NDS_SEARCH_VALUE_HAS_FLAG			26
+-#define NDS_SEARCH_ATTR_FLAGS				27
+-#define NDS_SEARCH_ATTR_HAS_FLAG			28
+-#define NDS_SEARCH_EID						29
++#define NDS_SEARCH_EQUAL                         7
++#define NDS_SEARCH_GREATER_OR_EQUAL              8
++#define NDS_SEARCH_LESS_OR_EQUAL                 9
++#define NDS_SEARCH_APPROX                       10
++#define NDS_SEARCH_PRESENT                      15
++#define NDS_SEARCH_RDN                          16
++#define NDS_SEARCH_BASE_CLASS                   17
++#define NDS_SEARCH_MODIFICATION_GE              18  /* Deprecated, use DS_SEARCH_ENTRY_MTS_GE */
++#define NDS_SEARCH_VALUE_TIME_GE                19  /* Deprecated, use DS_SEARCH_VALUE_MTS_GE */
++#define NDS_SEARCH_REFERENCES                   20
++#define NDS_SEARCH_DN_IN_VALUE                  21
++#define NDS_SEARCH_SCHEMA_IN_VALUE              22
++#define NDS_SEARCH_ENTRY_FLAGS                  23
++#define NDS_SEARCH_ENTRY_HAS_FLAG               24
++#define NDS_SEARCH_VALUE_FLAGS                  25
++#define NDS_SEARCH_VALUE_HAS_FLAG               26
++#define NDS_SEARCH_ATTR_FLAGS                   27
++#define NDS_SEARCH_ATTR_HAS_FLAG                28
++#define NDS_SEARCH_EID                          29
+ 
+-#define NDS_SEARCH_ENTRY_MTS_GE			    18
+-#define NDS_SEARCH_ENTRY_MTS_G				30
+-#define NDS_SEARCH_ENTRY_MTS_LE			    31
+-#define NDS_SEARCH_ENTRY_MTS_L				32
+-#define NDS_SEARCH_ENTRY_MTS_EQ			    33
+-#define NDS_SEARCH_ENTRY_MTS_EQ_APPROX	    34
+-#define NDS_SEARCH_VALUE_MTS_GE			    19
+-#define NDS_SEARCH_VALUE_MTS_G				35
+-#define NDS_SEARCH_VALUE_MTS_LE			    36
+-#define NDS_SEARCH_VALUE_MTS_L				37
+-#define NDS_SEARCH_VALUE_MTS_EQ			    38
+-#define NDS_SEARCH_VALUE_MTS_EQ_APPROX	    39
++#define NDS_SEARCH_ENTRY_MTS_GE                 18
++#define NDS_SEARCH_ENTRY_MTS_G                  30
++#define NDS_SEARCH_ENTRY_MTS_LE                 31
++#define NDS_SEARCH_ENTRY_MTS_L                  32
++#define NDS_SEARCH_ENTRY_MTS_EQ                 33
++#define NDS_SEARCH_ENTRY_MTS_EQ_APPROX          34
++#define NDS_SEARCH_VALUE_MTS_GE                 19
++#define NDS_SEARCH_VALUE_MTS_G                  35
++#define NDS_SEARCH_VALUE_MTS_LE                 36
++#define NDS_SEARCH_VALUE_MTS_L                  37
++#define NDS_SEARCH_VALUE_MTS_EQ                 38
++#define NDS_SEARCH_VALUE_MTS_EQ_APPROX          39
+ 
+-#define NDS_SEARCH_ENTRY_CTS_GE			    40
+-#define NDS_SEARCH_ENTRY_CTS_G				41
+-#define NDS_SEARCH_ENTRY_CTS_LE			    42
+-#define NDS_SEARCH_ENTRY_CTS_L				43
+-#define NDS_SEARCH_ENTRY_CTS_EQ			    44
+-#define NDS_SEARCH_ENTRY_CTS_EQ_APPROX	    45
+-#define NDS_SEARCH_VALUE_CTS_GE			    46
+-#define NDS_SEARCH_VALUE_CTS_G				47
+-#define NDS_SEARCH_VALUE_CTS_LE			    48
+-#define NDS_SEARCH_VALUE_CTS_L				49
+-#define NDS_SEARCH_VALUE_CTS_EQ			    50
+-#define NDS_SEARCH_VALUE_CTS_EQ_APPROX	    51
+-#define NDS_SEARCH_EXTENSIBLE               52
+-#define NDS_SEARCH_ENTRY_SUBCOUNT_GE        53
+-#define NDS_SEARCH_ENTRY_SUBCOUNT_G         54
+-#define NDS_SEARCH_ENTRY_SUBCOUNT_LE        55
+-#define NDS_SEARCH_ENTRY_SUBCOUNT_L         56
+-#define NDS_SEARCH_ENTRY_SUBCOUNT_EQ        57
++#define NDS_SEARCH_ENTRY_CTS_GE                 40
++#define NDS_SEARCH_ENTRY_CTS_G                  41
++#define NDS_SEARCH_ENTRY_CTS_LE                 42
++#define NDS_SEARCH_ENTRY_CTS_L                  43
++#define NDS_SEARCH_ENTRY_CTS_EQ                 44
++#define NDS_SEARCH_ENTRY_CTS_EQ_APPROX          45
++#define NDS_SEARCH_VALUE_CTS_GE                 46
++#define NDS_SEARCH_VALUE_CTS_G                  47
++#define NDS_SEARCH_VALUE_CTS_LE                 48
++#define NDS_SEARCH_VALUE_CTS_L                  49
++#define NDS_SEARCH_VALUE_CTS_EQ                 50
++#define NDS_SEARCH_VALUE_CTS_EQ_APPROX          51
++#define NDS_SEARCH_EXTENSIBLE                   52
++#define NDS_SEARCH_ENTRY_SUBCOUNT_GE            53
++#define NDS_SEARCH_ENTRY_SUBCOUNT_G             54
++#define NDS_SEARCH_ENTRY_SUBCOUNT_LE            55
++#define NDS_SEARCH_ENTRY_SUBCOUNT_L             56
++#define NDS_SEARCH_ENTRY_SUBCOUNT_EQ            57
+ 
+-#define DCS_OPS						0x10000000L
+-#define DCS_MOD_GE_WITH_ATTR		DCS_OPS + NDS_SEARCH_MODIFICATION_GE
+-#define DCS_VALUE_GE_WITH_ATTR	    DCS_OPS + NDS_SEARCH_VALUE_TIME_GE
+-#define DCS_MASK					~DCS_OPS
++#define DCS_OPS                         0x10000000L
++#define DCS_MOD_GE_WITH_ATTR            DCS_OPS + NDS_SEARCH_MODIFICATION_GE
++#define DCS_VALUE_GE_WITH_ATTR          DCS_OPS + NDS_SEARCH_VALUE_TIME_GE
++#define DCS_MASK			~DCS_OPS
+ 
+ /* Iterator verbs */
+-#define IT_CLEAR				1
+-#define IT_COPY				    2
+-#define IT_COUNT				3
+-#define IT_CREATE 			    4
+-#define IT_CURRENT			    5
+-#define IT_DESTROY			    6
+-#define IT_DONE				    7
+-#define IT_FIRST				8
+-#define IT_GETPOSITION		    9
+-#define IT_LAST				    10
+-#define IT_NEXT				    11
+-#define IT_PREV				    12
+-#define IT_POSITION			    13
+-#define IT_POSITION_IT		    14
+-#define IT_SETINDEX			    15
+-#define IT_SETFILTER			16
+-#define IT_SKIP				    17
+-#define IT_TYPEDOWN			    18
+-#define IT_ATFIRST			    19
+-#define IT_ATEOF				20
+-#define IT_GETINDEX			    21
+-#define IT_ISPOSITIONABLE	    22
+-#define IT_ATBOF				23
+-#define IT_ATLAST				24
++#define IT_CLEAR                                 1
++#define IT_COPY                                  2
++#define IT_COUNT                                 3
++#define IT_CREATE                                4
++#define IT_CURRENT                               5
++#define IT_DESTROY                               6
++#define IT_DONE                                  7
++#define IT_FIRST                                 8
++#define IT_GETPOSITION                           9
++#define IT_LAST                                 10
++#define IT_NEXT                                 11
++#define IT_PREV                                 12
++#define IT_POSITION                             13
++#define IT_POSITION_IT                          14
++#define IT_SETINDEX                             15
++#define IT_SETFILTER                            16
++#define IT_SKIP                                 17
++#define IT_TYPEDOWN                             18
++#define IT_ATFIRST                              19
++#define IT_ATEOF                                20
++#define IT_GETINDEX                             21
++#define IT_ISPOSITIONABLE                       22
++#define IT_ATBOF                                23
++#define IT_ATLAST                               24
+ 
+ /* Iteration information flags */
+-#define DSI_OUTPUT_FIELDS				0x00000001L
+-#define DSI_ENTRY_ID						0x00000002L
+-#define DSI_ENTRY_FLAGS 				0x00000004L
+-#define DSI_SUBORDINATE_COUNT			0x00000008L
+-#define DSI_MODIFICATION_TIME			0x00000010L
+-#define DSI_MODIFICATION_TIMESTAMP	0x00000020L
+-#define DSI_CREATION_TIMESTAMP		0x00000040L
+-#define DSI_PARTITION_ROOT_ID			0x00000080L
+-#define DSI_PARENT_ID					0x00000100L
+-#define DSI_REVISION_COUNT				0x00000200L
+-#define DSI_REPLICA_TYPE				0x00000400L
+-#define DSI_BASE_CLASS					0x00000800L
+-#define DSI_ENTRY_RDN					0x00001000L
+-#define DSI_ENTRY_DN						0x00002000L
+-#define DSI_PARTITION_ROOT_DN			0x00004000L
+-#define DSI_PARENT_DN					0x00008000L
+-#define DSI_PURGE_TIME					0x00010000L
+-#define DSI_DEREFERENCED_BASE_CLASS 0x00020000L
+-#define DSI_REPLICA_NUMBER				0x00040000L
+-#define DSI_REPLICA_STATE				0x00080000L
+-#define DSI_FEDERATION_BOUNDARY		0x00100000L
+-#define DSI_SCHEMA_BOUNDARY			0x00200000L
+-#define DSI_FEDERATION_BOUNDARY_ID	0x00400000L
+-#define DSI_SCHEMA_BOUNDARY_ID		0x00800000L
+-#define DSI_CUR_SUBCOUNT				0x01000000L
+-#define DSI_LOCAL_ENTRY_FLAGS			0x02000000L
++#define DSI_OUTPUT_FIELDS               0x00000001L
++#define DSI_ENTRY_ID                    0x00000002L
++#define DSI_ENTRY_FLAGS                 0x00000004L
++#define DSI_SUBORDINATE_COUNT           0x00000008L
++#define DSI_MODIFICATION_TIME           0x00000010L
++#define DSI_MODIFICATION_TIMESTAMP      0x00000020L
++#define DSI_CREATION_TIMESTAMP          0x00000040L
++#define DSI_PARTITION_ROOT_ID           0x00000080L
++#define DSI_PARENT_ID                   0x00000100L
++#define DSI_REVISION_COUNT              0x00000200L
++#define DSI_REPLICA_TYPE                0x00000400L
++#define DSI_BASE_CLASS                  0x00000800L
++#define DSI_ENTRY_RDN                   0x00001000L
++#define DSI_ENTRY_DN                    0x00002000L
++#define DSI_PARTITION_ROOT_DN           0x00004000L
++#define DSI_PARENT_DN                   0x00008000L
++#define DSI_PURGE_TIME                  0x00010000L
++#define DSI_DEREFERENCED_BASE_CLASS     0x00020000L
++#define DSI_REPLICA_NUMBER              0x00040000L
++#define DSI_REPLICA_STATE               0x00080000L
++#define DSI_FEDERATION_BOUNDARY         0x00100000L
++#define DSI_SCHEMA_BOUNDARY             0x00200000L
++#define DSI_FEDERATION_BOUNDARY_ID      0x00400000L
++#define DSI_SCHEMA_BOUNDARY_ID          0x00800000L
++#define DSI_CUR_SUBCOUNT                0x01000000L
++#define DSI_LOCAL_ENTRY_FLAGS           0x02000000L
+ 
+ static const value_string zensearchenum[] = {
+-    { 0, "[Root]" },
+-    { 1, "Object Container" },
+-    { 2, "Associated Container" },
+-    { 3, "Selected Container" },
+-    {0, NULL }
++	{ 0, "[Root]" },
++	{ 1, "Object Container" },
++	{ 2, "Associated Container" },
++	{ 3, "Selected Container" },
++	{0, NULL }
+ };
+ 
+ static const value_string itersearchenum[] = {
+-    { NDS_SEARCH_ITEM, "Search Item" },
+-    { NDS_SEARCH_OR, "OR" },
+-    { NDS_SEARCH_AND, "AND" },
+-    { NDS_SEARCH_NOT, "NOT" },
+-    { NDS_SEARCH_EQUAL, "Equals" },
+-    { NDS_SEARCH_GREATER_OR_EQUAL, "Greater or Equals" },
+-    { NDS_SEARCH_LESS_OR_EQUAL, "Less or Equals" },
+-    { NDS_SEARCH_APPROX, "Approximately" },
+-    { NDS_SEARCH_PRESENT, "Present" },
+-    { NDS_SEARCH_RDN, "Relative Distinguished Name" },
+-    { NDS_SEARCH_BASE_CLASS, "Base Class" },
+-    { NDS_SEARCH_MODIFICATION_GE, "Modification Greater or Equal" },
+-    { NDS_SEARCH_VALUE_TIME_GE, "Time Value Greater or Equal" },
+-    { NDS_SEARCH_REFERENCES, "References" },
+-    { NDS_SEARCH_DN_IN_VALUE, "Designated Name in Value" },
+-    { NDS_SEARCH_SCHEMA_IN_VALUE, "Schema in Value" },
+-    { NDS_SEARCH_ENTRY_FLAGS, "Entry Flags" },
+-    { NDS_SEARCH_ENTRY_HAS_FLAG, "Entry has Flags" },
+-    { NDS_SEARCH_VALUE_FLAGS, "Value Flags" },
+-    { NDS_SEARCH_VALUE_HAS_FLAG, "Value has Flags" },
+-    { NDS_SEARCH_ATTR_FLAGS, "Attribute Flags" },
+-    { NDS_SEARCH_ATTR_HAS_FLAG, "Attribute has Flags" },
+-    { NDS_SEARCH_EID, "Entry ID" },
+-    { NDS_SEARCH_ENTRY_MTS_GE, "Entry Modification Timestamp Greater or Equal" },
+-    { NDS_SEARCH_ENTRY_MTS_G, "Entry Modification Timestamp Greater" },
+-    { NDS_SEARCH_ENTRY_MTS_LE, "Entry Modification Timestamp Less or Equals" },
+-    { NDS_SEARCH_ENTRY_MTS_L, "Entry Modification Timestamp Less" },
+-    { NDS_SEARCH_ENTRY_MTS_EQ, "Entry Modification Timestamp Equals" },
+-    { NDS_SEARCH_ENTRY_MTS_EQ_APPROX, "Entry Modification Timestamp Equals Approximately" },
+-    { NDS_SEARCH_VALUE_MTS_GE, "Value Modification Timestamp Greater or Equal" },
+-    { NDS_SEARCH_VALUE_MTS_G, "Value Modification Timestamp Greater" },
+-    { NDS_SEARCH_VALUE_MTS_LE, "Value Modification Timestamp Less or Equals" },
+-    { NDS_SEARCH_VALUE_MTS_L, "Value Modification Timestamp Less" },
+-    { NDS_SEARCH_VALUE_MTS_EQ, "Value Modification Timestamp Equals" },
+-    { NDS_SEARCH_VALUE_MTS_EQ_APPROX, "Value Modification Timestamp Equals Approximately" },
+-    { NDS_SEARCH_ENTRY_CTS_GE, "Entry Creation Timestamp Greater or Equals" },
+-    { NDS_SEARCH_ENTRY_CTS_G, "Entry Creation Timestamp Greater" },
+-    { NDS_SEARCH_ENTRY_CTS_LE, "Entry Creation Timestamp Less or Equals" },
+-    { NDS_SEARCH_ENTRY_CTS_L, "Entry Creation Timestamp Less" },
+-    { NDS_SEARCH_ENTRY_CTS_EQ, "Entry Creation Timestamp Equals" },
+-    { NDS_SEARCH_ENTRY_CTS_EQ_APPROX, "Entry Creation Timestamp Equals Approximately" },
+-    { NDS_SEARCH_VALUE_CTS_GE, "Value Creation Timestamp Greater or Equals" },
+-    { NDS_SEARCH_VALUE_CTS_G, "Value Creation Timestamp Greater" },
+-    { NDS_SEARCH_VALUE_CTS_LE, "Value Creation Timestamp Less or Equals" },
+-    { NDS_SEARCH_VALUE_CTS_L, "Value Creation Timestamp Less" },
+-    { NDS_SEARCH_VALUE_CTS_EQ, "Value Creation Timestamp Equals" },
+-    { NDS_SEARCH_VALUE_CTS_EQ_APPROX, "Value Creation Timestamp Equals Approximately" },
+-    { NDS_SEARCH_EXTENSIBLE, "Extensible" },
+-    { NDS_SEARCH_ENTRY_SUBCOUNT_GE, "Entry SubCount Greater or Equals" },
+-    { NDS_SEARCH_ENTRY_SUBCOUNT_G, "Entry SubCount Greater" },
+-    { NDS_SEARCH_ENTRY_SUBCOUNT_LE, "Entry SubCount Less or Equals" },
+-    { NDS_SEARCH_ENTRY_SUBCOUNT_L, "Entry SubCount Less" },
+-    { NDS_SEARCH_ENTRY_SUBCOUNT_EQ, "Entry SubCount Equals" },
+-    {0, NULL }
++	{ NDS_SEARCH_ITEM, "Search Item" },
++	{ NDS_SEARCH_OR, "OR" },
++	{ NDS_SEARCH_AND, "AND" },
++	{ NDS_SEARCH_NOT, "NOT" },
++	{ NDS_SEARCH_EQUAL, "Equals" },
++	{ NDS_SEARCH_GREATER_OR_EQUAL, "Greater or Equals" },
++	{ NDS_SEARCH_LESS_OR_EQUAL, "Less or Equals" },
++	{ NDS_SEARCH_APPROX, "Approximately" },
++	{ NDS_SEARCH_PRESENT, "Present" },
++	{ NDS_SEARCH_RDN, "Relative Distinguished Name" },
++	{ NDS_SEARCH_BASE_CLASS, "Base Class" },
++	{ NDS_SEARCH_MODIFICATION_GE, "Modification Greater or Equal" },
++	{ NDS_SEARCH_VALUE_TIME_GE, "Time Value Greater or Equal" },
++	{ NDS_SEARCH_REFERENCES, "References" },
++	{ NDS_SEARCH_DN_IN_VALUE, "Designated Name in Value" },
++	{ NDS_SEARCH_SCHEMA_IN_VALUE, "Schema in Value" },
++	{ NDS_SEARCH_ENTRY_FLAGS, "Entry Flags" },
++	{ NDS_SEARCH_ENTRY_HAS_FLAG, "Entry has Flags" },
++	{ NDS_SEARCH_VALUE_FLAGS, "Value Flags" },
++	{ NDS_SEARCH_VALUE_HAS_FLAG, "Value has Flags" },
++	{ NDS_SEARCH_ATTR_FLAGS, "Attribute Flags" },
++	{ NDS_SEARCH_ATTR_HAS_FLAG, "Attribute has Flags" },
++	{ NDS_SEARCH_EID, "Entry ID" },
++	{ NDS_SEARCH_ENTRY_MTS_GE, "Entry Modification Timestamp Greater or Equal" },
++	{ NDS_SEARCH_ENTRY_MTS_G, "Entry Modification Timestamp Greater" },
++	{ NDS_SEARCH_ENTRY_MTS_LE, "Entry Modification Timestamp Less or Equals" },
++	{ NDS_SEARCH_ENTRY_MTS_L, "Entry Modification Timestamp Less" },
++	{ NDS_SEARCH_ENTRY_MTS_EQ, "Entry Modification Timestamp Equals" },
++	{ NDS_SEARCH_ENTRY_MTS_EQ_APPROX, "Entry Modification Timestamp Equals Approximately" },
++	{ NDS_SEARCH_VALUE_MTS_GE, "Value Modification Timestamp Greater or Equal" },
++	{ NDS_SEARCH_VALUE_MTS_G, "Value Modification Timestamp Greater" },
++	{ NDS_SEARCH_VALUE_MTS_LE, "Value Modification Timestamp Less or Equals" },
++	{ NDS_SEARCH_VALUE_MTS_L, "Value Modification Timestamp Less" },
++	{ NDS_SEARCH_VALUE_MTS_EQ, "Value Modification Timestamp Equals" },
++	{ NDS_SEARCH_VALUE_MTS_EQ_APPROX, "Value Modification Timestamp Equals Approximately" },
++	{ NDS_SEARCH_ENTRY_CTS_GE, "Entry Creation Timestamp Greater or Equals" },
++	{ NDS_SEARCH_ENTRY_CTS_G, "Entry Creation Timestamp Greater" },
++	{ NDS_SEARCH_ENTRY_CTS_LE, "Entry Creation Timestamp Less or Equals" },
++	{ NDS_SEARCH_ENTRY_CTS_L, "Entry Creation Timestamp Less" },
++	{ NDS_SEARCH_ENTRY_CTS_EQ, "Entry Creation Timestamp Equals" },
++	{ NDS_SEARCH_ENTRY_CTS_EQ_APPROX, "Entry Creation Timestamp Equals Approximately" },
++	{ NDS_SEARCH_VALUE_CTS_GE, "Value Creation Timestamp Greater or Equals" },
++	{ NDS_SEARCH_VALUE_CTS_G, "Value Creation Timestamp Greater" },
++	{ NDS_SEARCH_VALUE_CTS_LE, "Value Creation Timestamp Less or Equals" },
++	{ NDS_SEARCH_VALUE_CTS_L, "Value Creation Timestamp Less" },
++	{ NDS_SEARCH_VALUE_CTS_EQ, "Value Creation Timestamp Equals" },
++	{ NDS_SEARCH_VALUE_CTS_EQ_APPROX, "Value Creation Timestamp Equals Approximately" },
++	{ NDS_SEARCH_EXTENSIBLE, "Extensible" },
++	{ NDS_SEARCH_ENTRY_SUBCOUNT_GE, "Entry SubCount Greater or Equals" },
++	{ NDS_SEARCH_ENTRY_SUBCOUNT_G, "Entry SubCount Greater" },
++	{ NDS_SEARCH_ENTRY_SUBCOUNT_LE, "Entry SubCount Less or Equals" },
++	{ NDS_SEARCH_ENTRY_SUBCOUNT_L, "Entry SubCount Less" },
++	{ NDS_SEARCH_ENTRY_SUBCOUNT_EQ, "Entry SubCount Equals" },
++	{0, NULL }
+ };
+ 
+ static const value_string iterator_subverbs[] = {
+@@ -309,23 +310,23 @@
+ 
+ 
+ static const value_string nds_tuned_tags[] = {
+-    { 0, "RDN Hint" },
+-    { 1, "RDN History" },
+-    {0, NULL }
++	{ 0, "RDN Hint" },
++	{ 1, "RDN History" },
++	{0, NULL }
+ };
+ 
+ static const value_string nds_scope_vals[] = {
+-    { 0, "Search Scope: 0x0000 - Examine base object only" },
+-    { 1, "Search Scope: 0x0001 - Search the immediate subordinates of the base object" },
+-    { 2, "Search Scope: 0x0002 - Search the base object and all of its subordinates" },
+-    { 3, "Search Scope: 0x0003 - Search the base objects and all objects in its partition (NDS version 8 or higher)" },
+-    {0, NULL }
++	{ 0, "Search Scope: 0x0000 - Examine base object only" },
++	{ 1, "Search Scope: 0x0001 - Search the immediate subordinates of the base object" },
++	{ 2, "Search Scope: 0x0002 - Search the base object and all of its subordinates" },
++	{ 3, "Search Scope: 0x0003 - Search the base objects and all objects in its partition (NDS version 8 or higher)" },
++	{0, NULL }
+ };
+ 
+ static const value_string nds_tuned_item_tags[] = {
+-    { 0, "Single Item" },
+-    { 1, "Multiple Items" },
+-    {0, NULL }
++	{ 0, "Single Item" },
++	{ 1, "Multiple Items" },
++	{0, NULL }
+ };
+ 
+ static const value_string nds_tags[] = {
+@@ -372,689 +373,689 @@
+ };
+ 
+ static const value_string ncp_rights_vals[] = {
+-  { 0x00, "No Rights"},
+-  { 0x01, "Read"},
+-  { 0x02, "Write"},
+-  { 0x03, "Read, Write"},
+-  { 0x04, "Deny Read"},
+-  { 0x05, "Read, Deny Read"},
+-  { 0x06, "Write, Deny Read"},
+-  { 0x07, "Read, Write, Deny Read"},
+-  { 0x08, "Deny Write"},
+-  { 0x09, "Read, Deny Write"},
+-  { 0x0a, "Write, Deny Write"},
+-  { 0x0b, "Read, Write, Deny Write"},
+-  { 0x0c, "Deny Read, Deny Write"},
+-  { 0x0d, "Read, Deny Read, Deny Write"},
+-  { 0x0e, "Write, Deny Read, Deny Write"},
+-  { 0x0f, "Read, Write, Deny Read, Deny Write"},
+-  { 0x10, "Compatibility"},
+-  { 0x11, "Read, Compatibility"},
+-  { 0x12, "Write, Compatibility"},
+-  { 0x13, "Read, Write, Compatibility"},
+-  { 0x14, "Deny Read, Compatibility"},
+-  { 0x15, "Read, Deny Read, Compatibility"},
+-  { 0x16, "Write, Deny Read, Compatibility"},
+-  { 0x17, "Read, Write, Deny Read, Compatibility"},
+-  { 0x18, "Deny Write, Compatibility"},
+-  { 0x19, "Read, Deny Write, Compatibility"},
+-  { 0x1a, "Write, Deny Write, Compatibility"},
+-  { 0x1b, "Read, Write, Deny Write, Compatibility"},
+-  { 0x1c, "Deny Read, Deny Write, Compatibility"},
+-  { 0x1d, "Read, Deny Read, Deny Write, Compatibility"},
+-  { 0x1e, "Write, Deny Read, Deny Write, Compatibility"},
+-  { 0x1f, "Read, Write, Deny Read, Deny Write, Compatibility"},
+-  { 0x40, "File Write Through"},
+-  { 0x41, "Read, File Write Through"},
+-  { 0x42, "Write, File Write Through"},
+-  { 0x43, "Read, Write, File Write Through"},
+-  { 0x44, "Deny Read, File Write Through"},
+-  { 0x45, "Read, Deny Read, File Write Through"},
+-  { 0x46, "Write, Deny Read, File Write Through"},
+-  { 0x47, "Read, Write, Deny Read, File Write Through"},
+-  { 0x48, "Deny Write, File Write Through"},
+-  { 0x49, "Read, Deny Write, File Write Through"},
+-  { 0x4a, "Write, Deny Write, File Write Through"},
+-  { 0x4b, "Read, Write, Deny Write, File Write Through"},
+-  { 0x4c, "Deny Read, Deny Write, File Write Through"},
+-  { 0x4d, "Read, Deny Read, Deny Write, File Write Through"},
+-  { 0x4e, "Write, Deny Read, Deny Write, File Write Through"},
+-  { 0x4f, "Read, Write, Deny Read, Deny Write, File Write Through"},
+-  { 0x50, "Compatibility, File Write Through"},
+-  { 0x51, "Read, Compatibility, File Write Through"},
+-  { 0x52, "Write, Compatibility, File Write Through"},
+-  { 0x53, "Read, Write, Compatibility, File Write Through"},
+-  { 0x54, "Deny Read, Compatibility, File Write Through"},
+-  { 0x55, "Read, Deny Read, Compatibility, File Write Through"},
+-  { 0x56, "Write, Deny Read, Compatibility, File Write Through"},
+-  { 0x57, "Read, Write, Deny Read, Compatibility, File Write Through"},
+-  { 0x58, "Deny Write, Compatibility, File Write Through"},
+-  { 0x59, "Read, Deny Write, Compatibility, File Write Through"},
+-  { 0x5a, "Write, Deny Write, Compatibility, File Write Through"},
+-  { 0x5b, "Read, Write, Deny Write, Compatibility, File Write Through"},
+-  { 0x5c, "Deny Read, Deny Write, Compatibility, File Write Through"},
+-  { 0x5d, "Read, Deny Read, Deny Write, Compatibility, File Write Through"},
+-  { 0x5e, "Write, Deny Read, Deny Write, Compatibility, File Write Through"},
+-  { 0x5f, "Read, Write, Deny Read, Deny Write, Compatibility, File Write Through"},
+-  { 0,    NULL }
++	{ 0x00, "No Rights"},
++	{ 0x01, "Read"},
++	{ 0x02, "Write"},
++	{ 0x03, "Read, Write"},
++	{ 0x04, "Deny Read"},
++	{ 0x05, "Read, Deny Read"},
++	{ 0x06, "Write, Deny Read"},
++	{ 0x07, "Read, Write, Deny Read"},
++	{ 0x08, "Deny Write"},
++	{ 0x09, "Read, Deny Write"},
++	{ 0x0a, "Write, Deny Write"},
++	{ 0x0b, "Read, Write, Deny Write"},
++	{ 0x0c, "Deny Read, Deny Write"},
++	{ 0x0d, "Read, Deny Read, Deny Write"},
++	{ 0x0e, "Write, Deny Read, Deny Write"},
++	{ 0x0f, "Read, Write, Deny Read, Deny Write"},
++	{ 0x10, "Compatibility"},
++	{ 0x11, "Read, Compatibility"},
++	{ 0x12, "Write, Compatibility"},
++	{ 0x13, "Read, Write, Compatibility"},
++	{ 0x14, "Deny Read, Compatibility"},
++	{ 0x15, "Read, Deny Read, Compatibility"},
++	{ 0x16, "Write, Deny Read, Compatibility"},
++	{ 0x17, "Read, Write, Deny Read, Compatibility"},
++	{ 0x18, "Deny Write, Compatibility"},
++	{ 0x19, "Read, Deny Write, Compatibility"},
++	{ 0x1a, "Write, Deny Write, Compatibility"},
++	{ 0x1b, "Read, Write, Deny Write, Compatibility"},
++	{ 0x1c, "Deny Read, Deny Write, Compatibility"},
++	{ 0x1d, "Read, Deny Read, Deny Write, Compatibility"},
++	{ 0x1e, "Write, Deny Read, Deny Write, Compatibility"},
++	{ 0x1f, "Read, Write, Deny Read, Deny Write, Compatibility"},
++	{ 0x40, "File Write Through"},
++	{ 0x41, "Read, File Write Through"},
++	{ 0x42, "Write, File Write Through"},
++	{ 0x43, "Read, Write, File Write Through"},
++	{ 0x44, "Deny Read, File Write Through"},
++	{ 0x45, "Read, Deny Read, File Write Through"},
++	{ 0x46, "Write, Deny Read, File Write Through"},
++	{ 0x47, "Read, Write, Deny Read, File Write Through"},
++	{ 0x48, "Deny Write, File Write Through"},
++	{ 0x49, "Read, Deny Write, File Write Through"},
++	{ 0x4a, "Write, Deny Write, File Write Through"},
++	{ 0x4b, "Read, Write, Deny Write, File Write Through"},
++	{ 0x4c, "Deny Read, Deny Write, File Write Through"},
++	{ 0x4d, "Read, Deny Read, Deny Write, File Write Through"},
++	{ 0x4e, "Write, Deny Read, Deny Write, File Write Through"},
++	{ 0x4f, "Read, Write, Deny Read, Deny Write, File Write Through"},
++	{ 0x50, "Compatibility, File Write Through"},
++	{ 0x51, "Read, Compatibility, File Write Through"},
++	{ 0x52, "Write, Compatibility, File Write Through"},
++	{ 0x53, "Read, Write, Compatibility, File Write Through"},
++	{ 0x54, "Deny Read, Compatibility, File Write Through"},
++	{ 0x55, "Read, Deny Read, Compatibility, File Write Through"},
++	{ 0x56, "Write, Deny Read, Compatibility, File Write Through"},
++	{ 0x57, "Read, Write, Deny Read, Compatibility, File Write Through"},
++	{ 0x58, "Deny Write, Compatibility, File Write Through"},
++	{ 0x59, "Read, Deny Write, Compatibility, File Write Through"},
++	{ 0x5a, "Write, Deny Write, Compatibility, File Write Through"},
++	{ 0x5b, "Read, Write, Deny Write, Compatibility, File Write Through"},
++	{ 0x5c, "Deny Read, Deny Write, Compatibility, File Write Through"},
++	{ 0x5d, "Read, Deny Read, Deny Write, Compatibility, File Write Through"},
++	{ 0x5e, "Write, Deny Read, Deny Write, Compatibility, File Write Through"},
++	{ 0x5f, "Read, Write, Deny Read, Deny Write, Compatibility, File Write Through"},
++	{ 0,    NULL }
+ };
+ 
+ static const value_string open_create_mode_vals[] = {
+-    { 0x01, "Open"},
+-    { 0x02, "Replace"},
+-    { 0x03, "Open, Replace"},
+-    { 0x08, "Create"},
+-    { 0x09, "Open, Create"},
+-    { 0x0a, "Replace, Create"},
+-    { 0x0b, "Open, Replace, Create"},
+-    { 0x20, "64-bit"},
+-    { 0x21, "Open, 64-bit"},
+-    { 0x22, "Replace, 64-bit"},
+-    { 0x23, "Open, Replace, 64-bit"},
+-    { 0x28, "Create, 64-bit"},
+-    { 0x29, "Open, Create, 64-bit"},
+-    { 0x2a, "Replace, Create, 64-bit"},
+-    { 0x2b, "Open, Replace, Create, 64-bit"},
+-    { 0x40, "Read Only"},
+-    { 0x41, "Open, Read Only"},
+-    { 0x42, "Replace, Read Only"},
+-    { 0x43, "Open, Replace, Read Only"},
+-    { 0x48, "Create, Read Only"},
+-    { 0x49, "Open, Create, Read Only"},
+-    { 0x4a, "Replace, Create, Read Only"},
+-    { 0x4b, "Open, Replace, Create, Read Only"},
+-    { 0x60, "64-bit, Read Only"},
+-    { 0x61, "Open, 64-bit, Read Only"},
+-    { 0x62, "Replace, 64-bit, Read Only"},
+-    { 0x63, "Open, Replace, 64-bit, Read Only"},
+-    { 0x68, "Create, 64-bit, Read Only"},
+-    { 0x69, "Open, Create, 64-bit, Read Only"},
+-    { 0x6a, "Replace, Create, 64-bit, Read Only"},
+-    { 0x6b, "Open, Replace, Create, 64-bit, Read Only"},
+-    { 0x80, "Op-Lock"},
+-    { 0x81, "Open, Op-Lock"},
+-    { 0x82, "Replace, Op-Lock"},
+-    { 0x83, "Open, Replace, Op-Lock"},
+-    { 0x88, "Create, Op-Lock"},
+-    { 0x89, "Open, Create, Op-Lock"},
+-    { 0x8a, "Replace, Create, Op-Lock"},
+-    { 0x8b, "Open, Replace, Create, Op-Lock"},
+-    { 0xa0, "64-bit, Op-Lock"},
+-    { 0xa1, "Open, 64-bit, Op-Lock"},
+-    { 0xa2, "Replace, 64-bit, Op-Lock"},
+-    { 0xa3, "Open, Replace, 64-bit, Op-Lock"},
+-    { 0xa8, "Create, 64-bit, Op-Lock"},
+-    { 0xa9, "Open, Create, 64-bit, Op-Lock"},
+-    { 0xaa, "Replace, Create, 64-bit, Op-Lock"},
+-    { 0xab, "Open, Replace, Create, 64-bit, Op-Lock"},
+-    { 0xc0, "Read Only, Op-Lock"},
+-    { 0xc1, "Open, Read Only, Op-Lock"},
+-    { 0xc2, "Replace, Read Only, Op-Lock"},
+-    { 0xc3, "Open, Replace, Read Only, Op-Lock"},
+-    { 0xc8, "Create, Read Only, Op-Lock"},
+-    { 0xc9, "Open, Create, Read Only, Op-Lock"},
+-    { 0xca, "Replace, Create, Read Only, Op-Lock"},
+-    { 0xcb, "Open, Replace, Create, Read Only, Op-Lock"},
+-    { 0xe0, "64-bit, Read Only, Op-Lock"},
+-    { 0xe1, "Open, 64-bit, Read Only, Op-Lock"},
+-    { 0xe2, "Replace, 64-bit, Read Only, Op-Lock"},
+-    { 0xe3, "Open, Replace, 64-bit, Read Only, Op-Lock"},
+-    { 0xe8, "Create, 64-bit, Read Only, Op-Lock"},
+-    { 0xe9, "Open, Create, 64-bit, Read Only, Op-Lock"},
+-    { 0xea, "Replace, Create, 64-bit, Read Only, Op-Lock"},
+-    { 0xeb, "Open, Replace, Create, 64-bit, Read Only, Op-Lock"},
+-    { 0,    NULL }
++	{ 0x01, "Open"},
++	{ 0x02, "Replace"},
++	{ 0x03, "Open, Replace"},
++	{ 0x08, "Create"},
++	{ 0x09, "Open, Create"},
++	{ 0x0a, "Replace, Create"},
++	{ 0x0b, "Open, Replace, Create"},
++	{ 0x20, "64-bit"},
++	{ 0x21, "Open, 64-bit"},
++	{ 0x22, "Replace, 64-bit"},
++	{ 0x23, "Open, Replace, 64-bit"},
++	{ 0x28, "Create, 64-bit"},
++	{ 0x29, "Open, Create, 64-bit"},
++	{ 0x2a, "Replace, Create, 64-bit"},
++	{ 0x2b, "Open, Replace, Create, 64-bit"},
++	{ 0x40, "Read Only"},
++	{ 0x41, "Open, Read Only"},
++	{ 0x42, "Replace, Read Only"},
++	{ 0x43, "Open, Replace, Read Only"},
++	{ 0x48, "Create, Read Only"},
++	{ 0x49, "Open, Create, Read Only"},
++	{ 0x4a, "Replace, Create, Read Only"},
++	{ 0x4b, "Open, Replace, Create, Read Only"},
++	{ 0x60, "64-bit, Read Only"},
++	{ 0x61, "Open, 64-bit, Read Only"},
++	{ 0x62, "Replace, 64-bit, Read Only"},
++	{ 0x63, "Open, Replace, 64-bit, Read Only"},
++	{ 0x68, "Create, 64-bit, Read Only"},
++	{ 0x69, "Open, Create, 64-bit, Read Only"},
++	{ 0x6a, "Replace, Create, 64-bit, Read Only"},
++	{ 0x6b, "Open, Replace, Create, 64-bit, Read Only"},
++	{ 0x80, "Op-Lock"},
++	{ 0x81, "Open, Op-Lock"},
++	{ 0x82, "Replace, Op-Lock"},
++	{ 0x83, "Open, Replace, Op-Lock"},
++	{ 0x88, "Create, Op-Lock"},
++	{ 0x89, "Open, Create, Op-Lock"},
++	{ 0x8a, "Replace, Create, Op-Lock"},
++	{ 0x8b, "Open, Replace, Create, Op-Lock"},
++	{ 0xa0, "64-bit, Op-Lock"},
++	{ 0xa1, "Open, 64-bit, Op-Lock"},
++	{ 0xa2, "Replace, 64-bit, Op-Lock"},
++	{ 0xa3, "Open, Replace, 64-bit, Op-Lock"},
++	{ 0xa8, "Create, 64-bit, Op-Lock"},
++	{ 0xa9, "Open, Create, 64-bit, Op-Lock"},
++	{ 0xaa, "Replace, Create, 64-bit, Op-Lock"},
++	{ 0xab, "Open, Replace, Create, 64-bit, Op-Lock"},
++	{ 0xc0, "Read Only, Op-Lock"},
++	{ 0xc1, "Open, Read Only, Op-Lock"},
++	{ 0xc2, "Replace, Read Only, Op-Lock"},
++	{ 0xc3, "Open, Replace, Read Only, Op-Lock"},
++	{ 0xc8, "Create, Read Only, Op-Lock"},
++	{ 0xc9, "Open, Create, Read Only, Op-Lock"},
++	{ 0xca, "Replace, Create, Read Only, Op-Lock"},
++	{ 0xcb, "Open, Replace, Create, Read Only, Op-Lock"},
++	{ 0xe0, "64-bit, Read Only, Op-Lock"},
++	{ 0xe1, "Open, 64-bit, Read Only, Op-Lock"},
++	{ 0xe2, "Replace, 64-bit, Read Only, Op-Lock"},
++	{ 0xe3, "Open, Replace, 64-bit, Read Only, Op-Lock"},
++	{ 0xe8, "Create, 64-bit, Read Only, Op-Lock"},
++	{ 0xe9, "Open, Create, 64-bit, Read Only, Op-Lock"},
++	{ 0xea, "Replace, Create, 64-bit, Read Only, Op-Lock"},
++	{ 0xeb, "Open, Replace, Create, 64-bit, Read Only, Op-Lock"},
++	{ 0,    NULL }
+ };
+ 
+ static const value_string open_create_action_vals[] = {
+-    { 0x01, "Opened"},
+-    { 0x02, "Created"},
+-    { 0x03, "Opened, Created"},
+-    { 0x04, "Replaced"},
+-    { 0x05, "Opened, Replaced"},
+-    { 0x06, "Created, Replaced"},
+-    { 0x07, "Opened, Created, Replaced"},
+-    { 0x08, "Compressed"},
+-    { 0x09, "Opened, Compressed"},
+-    { 0x0a, "Created, Compressed"},
+-    { 0x0b, "Opened, Created, Compressed"},
+-    { 0x0c, "Replaced, Compressed"},
+-    { 0x0d, "Opened, Replaced, Compressed"},
+-    { 0x0e, "Created, Replaced, Compressed"},
+-    { 0x0f, "Opened, Created, Replaced, Compressed"},
+-    { 0x80, "Read Only"},
+-    { 0x81, "Opened, Read Only"},
+-    { 0x82, "Created, Read Only"},
+-    { 0x83, "Opened, Created, Read Only"},
+-    { 0x84, "Replaced, Read Only"},
+-    { 0x85, "Opened, Replaced, Read Only"},
+-    { 0x86, "Created, Replaced, Read Only"},
+-    { 0x87, "Opened, Created, Replaced, Read Only"},
+-    { 0x88, "Compressed, Read Only"},
+-    { 0x89, "Opened, Compressed, Read Only"},
+-    { 0x8a, "Created, Compressed, Read Only"},
+-    { 0x8b, "Opened, Created, Compressed, Read Only"},
+-    { 0x8c, "Replaced, Compressed, Read Only"},
+-    { 0x8d, "Opened, Replaced, Compressed, Read Only"},
+-    { 0x8e, "Created, Replaced, Compressed, Read Only"},
+-    { 0x8f, "Opened, Created, Replaced, Compressed, Read Only"},
+-    { 0,    NULL }
++	{ 0x01, "Opened"},
++	{ 0x02, "Created"},
++	{ 0x03, "Opened, Created"},
++	{ 0x04, "Replaced"},
++	{ 0x05, "Opened, Replaced"},
++	{ 0x06, "Created, Replaced"},
++	{ 0x07, "Opened, Created, Replaced"},
++	{ 0x08, "Compressed"},
++	{ 0x09, "Opened, Compressed"},
++	{ 0x0a, "Created, Compressed"},
++	{ 0x0b, "Opened, Created, Compressed"},
++	{ 0x0c, "Replaced, Compressed"},
++	{ 0x0d, "Opened, Replaced, Compressed"},
++	{ 0x0e, "Created, Replaced, Compressed"},
++	{ 0x0f, "Opened, Created, Replaced, Compressed"},
++	{ 0x80, "Read Only"},
++	{ 0x81, "Opened, Read Only"},
++	{ 0x82, "Created, Read Only"},
++	{ 0x83, "Opened, Created, Read Only"},
++	{ 0x84, "Replaced, Read Only"},
++	{ 0x85, "Opened, Replaced, Read Only"},
++	{ 0x86, "Created, Replaced, Read Only"},
++	{ 0x87, "Opened, Created, Replaced, Read Only"},
++	{ 0x88, "Compressed, Read Only"},
++	{ 0x89, "Opened, Compressed, Read Only"},
++	{ 0x8a, "Created, Compressed, Read Only"},
++	{ 0x8b, "Opened, Created, Compressed, Read Only"},
++	{ 0x8c, "Replaced, Compressed, Read Only"},
++	{ 0x8d, "Opened, Replaced, Compressed, Read Only"},
++	{ 0x8e, "Created, Replaced, Compressed, Read Only"},
++	{ 0x8f, "Opened, Created, Replaced, Compressed, Read Only"},
++	{ 0,    NULL }
+ };
+ 
+ static const value_string access_rights_vals[] = {
+-    { 0x0000, "No Rights"},
++	{ 0x0000, "No Rights"},
+ 	{ 0x0001, "Read"},
+-    { 0x0002, "Write"},
+-    { 0x0003, "Read, Write"},
+-    { 0x0004, "Open"},
++	{ 0x0002, "Write"},
++	{ 0x0003, "Read, Write"},
++	{ 0x0004, "Open"},
+ 	{ 0x0005, "Read, Open"},
+-    { 0x0006, "Write, Open"},
+-    { 0x0007, "Read, Write, Open"},
+-    { 0x0008, "Create"},
++	{ 0x0006, "Write, Open"},
++	{ 0x0007, "Read, Write, Open"},
++	{ 0x0008, "Create"},
+ 	{ 0x0009, "Read, Create"},
+-    { 0x000a, "Write, Create"},
+-    { 0x000b, "Read, Write, Create"},
+-    { 0x000c, "Open, Create"},
++	{ 0x000a, "Write, Create"},
++	{ 0x000b, "Read, Write, Create"},
++	{ 0x000c, "Open, Create"},
+ 	{ 0x000d, "Read, Open, Create"},
+-    { 0x000e, "Write, Open, Create"},
+-    { 0x000f, "Read, Write, Open, Create"},
+-    { 0x0010, "Delete"},
++	{ 0x000e, "Write, Open, Create"},
++	{ 0x000f, "Read, Write, Open, Create"},
++	{ 0x0010, "Delete"},
+ 	{ 0x0011, "Read, Delete"},
+-    { 0x0012, "Write, Delete"},
+-    { 0x0013, "Read, Write, Delete"},
+-    { 0x0014, "Open, Delete"},
++	{ 0x0012, "Write, Delete"},
++	{ 0x0013, "Read, Write, Delete"},
++	{ 0x0014, "Open, Delete"},
+ 	{ 0x0015, "Read, Open, Delete"},
+-    { 0x0016, "Write, Open, Delete"},
+-    { 0x0017, "Read, Write, Open, Delete"},
+-    { 0x0018, "Create, Delete"},
++	{ 0x0016, "Write, Open, Delete"},
++	{ 0x0017, "Read, Write, Open, Delete"},
++	{ 0x0018, "Create, Delete"},
+ 	{ 0x0019, "Read, Create, Delete"},
+-    { 0x001a, "Write, Create, Delete"},
+-    { 0x001b, "Read, Write, Create, Delete"},
+-    { 0x001c, "Open, Create, Delete"},
++	{ 0x001a, "Write, Create, Delete"},
++	{ 0x001b, "Read, Write, Create, Delete"},
++	{ 0x001c, "Open, Create, Delete"},
+ 	{ 0x001d, "Read, Open, Create, Delete"},
+-    { 0x001e, "Write, Open, Create, Delete"},
+-    { 0x001f, "Read, Write, Open, Create, Delete"},
+-    { 0x0020, "Parental"},
++	{ 0x001e, "Write, Open, Create, Delete"},
++	{ 0x001f, "Read, Write, Open, Create, Delete"},
++	{ 0x0020, "Parental"},
+ 	{ 0x0021, "Read, Parental"},
+-    { 0x0022, "Write, Parental"},
+-    { 0x0023, "Read, Write, Parental"},
+-    { 0x0024, "Open, Parental"},
++	{ 0x0022, "Write, Parental"},
++	{ 0x0023, "Read, Write, Parental"},
++	{ 0x0024, "Open, Parental"},
+ 	{ 0x0025, "Read, Open, Parental"},
+-    { 0x0026, "Write, Open, Parental"},
+-    { 0x0027, "Read, Write, Open, Parental"},
+-    { 0x0028, "Create, Parental"},
++	{ 0x0026, "Write, Open, Parental"},
++	{ 0x0027, "Read, Write, Open, Parental"},
++	{ 0x0028, "Create, Parental"},
+ 	{ 0x0029, "Read, Create, Parental"},
+-    { 0x002a, "Write, Create, Parental"},
+-    { 0x002b, "Read, Write, Create, Parental"},
+-    { 0x002c, "Open, Create, Parental"},
++	{ 0x002a, "Write, Create, Parental"},
++	{ 0x002b, "Read, Write, Create, Parental"},
++	{ 0x002c, "Open, Create, Parental"},
+ 	{ 0x002d, "Read, Open, Create, Parental"},
+-    { 0x002e, "Write, Open, Create, Parental"},
+-    { 0x002f, "Read, Write, Open, Create, Parental"},
+-    { 0x0030, "Delete, Parental"},
++	{ 0x002e, "Write, Open, Create, Parental"},
++	{ 0x002f, "Read, Write, Open, Create, Parental"},
++	{ 0x0030, "Delete, Parental"},
+ 	{ 0x0031, "Read, Delete, Parental"},
+-    { 0x0032, "Write, Delete, Parental"},
+-    { 0x0033, "Read, Write, Delete, Parental"},
+-    { 0x0034, "Open, Delete, Parental"},
++	{ 0x0032, "Write, Delete, Parental"},
++	{ 0x0033, "Read, Write, Delete, Parental"},
++	{ 0x0034, "Open, Delete, Parental"},
+ 	{ 0x0035, "Read, Open, Delete, Parental"},
+-    { 0x0036, "Write, Open, Delete, Parental"},
+-    { 0x0037, "Read, Write, Open, Delete, Parental"},
+-    { 0x0038, "Create, Delete, Parental"},
++	{ 0x0036, "Write, Open, Delete, Parental"},
++	{ 0x0037, "Read, Write, Open, Delete, Parental"},
++	{ 0x0038, "Create, Delete, Parental"},
+ 	{ 0x0039, "Read, Create, Delete, Parental"},
+-    { 0x003a, "Write, Create, Delete, Parental"},
+-    { 0x003b, "Read, Write, Create, Delete, Parental"},
+-    { 0x003c, "Open, Create, Delete, Parental"},
++	{ 0x003a, "Write, Create, Delete, Parental"},
++	{ 0x003b, "Read, Write, Create, Delete, Parental"},
++	{ 0x003c, "Open, Create, Delete, Parental"},
+ 	{ 0x003d, "Read, Open, Create, Delete, Parental"},
+-    { 0x003e, "Write, Open, Create, Delete, Parental"},
+-    { 0x003f, "Read, Write, Open, Create, Delete, Parental"},
+-    { 0x0040, "Search"},
++	{ 0x003e, "Write, Open, Create, Delete, Parental"},
++	{ 0x003f, "Read, Write, Open, Create, Delete, Parental"},
++	{ 0x0040, "Search"},
+ 	{ 0x0041, "Read, Search"},
+-    { 0x0042, "Write, Search"},
+-    { 0x0043, "Read, Write, Search"},
+-    { 0x0044, "Open, Search"},
++	{ 0x0042, "Write, Search"},
++	{ 0x0043, "Read, Write, Search"},
++	{ 0x0044, "Open, Search"},
+ 	{ 0x0045, "Read, Open, Search"},
+-    { 0x0046, "Write, Open, Search"},
+-    { 0x0047, "Read, Write, Open, Search"},
+-    { 0x0048, "Create, Search"},
++	{ 0x0046, "Write, Open, Search"},
++	{ 0x0047, "Read, Write, Open, Search"},
++	{ 0x0048, "Create, Search"},
+ 	{ 0x0049, "Read, Create, Search"},
+-    { 0x004a, "Write, Create, Search"},
+-    { 0x004b, "Read, Write, Create, Search"},
+-    { 0x004c, "Open, Create, Search"},
++	{ 0x004a, "Write, Create, Search"},
++	{ 0x004b, "Read, Write, Create, Search"},
++	{ 0x004c, "Open, Create, Search"},
+ 	{ 0x004d, "Read, Open, Create, Search"},
+-    { 0x004e, "Write, Open, Create, Search"},
+-    { 0x004f, "Read, Write, Open, Create, Search"},
+-    { 0x0050, "Delete, Search"},
++	{ 0x004e, "Write, Open, Create, Search"},
++	{ 0x004f, "Read, Write, Open, Create, Search"},
++	{ 0x0050, "Delete, Search"},
+ 	{ 0x0051, "Read, Delete, Search"},
+-    { 0x0052, "Write, Delete, Search"},
+-    { 0x0053, "Read, Write, Delete, Search"},
+-    { 0x0054, "Open, Delete, Search"},
++	{ 0x0052, "Write, Delete, Search"},
++	{ 0x0053, "Read, Write, Delete, Search"},
++	{ 0x0054, "Open, Delete, Search"},
+ 	{ 0x0055, "Read, Open, Delete, Search"},
+-    { 0x0056, "Write, Open, Delete, Search"},
+-    { 0x0057, "Read, Write, Open, Delete, Search"},
+-    { 0x0058, "Create, Delete, Search"},
++	{ 0x0056, "Write, Open, Delete, Search"},
++	{ 0x0057, "Read, Write, Open, Delete, Search"},
++	{ 0x0058, "Create, Delete, Search"},
+ 	{ 0x0059, "Read, Create, Delete, Search"},
+-    { 0x005a, "Write, Create, Delete, Search"},
+-    { 0x005b, "Read, Write, Create, Delete, Search"},
+-    { 0x005c, "Open, Create, Delete, Search"},
++	{ 0x005a, "Write, Create, Delete, Search"},
++	{ 0x005b, "Read, Write, Create, Delete, Search"},
++	{ 0x005c, "Open, Create, Delete, Search"},
+ 	{ 0x005d, "Read, Open, Create, Delete, Search"},
+-    { 0x005e, "Write, Open, Create, Delete, Search"},
+-    { 0x005f, "Read, Write, Open, Create, Delete, Search"},
+-    { 0x0060, "Parental, Search"},
++	{ 0x005e, "Write, Open, Create, Delete, Search"},
++	{ 0x005f, "Read, Write, Open, Create, Delete, Search"},
++	{ 0x0060, "Parental, Search"},
+ 	{ 0x0061, "Read, Parental, Search"},
+-    { 0x0062, "Write, Parental, Search"},
+-    { 0x0063, "Read, Write, Parental, Search"},
+-    { 0x0064, "Open, Parental, Search"},
++	{ 0x0062, "Write, Parental, Search"},
++	{ 0x0063, "Read, Write, Parental, Search"},
++	{ 0x0064, "Open, Parental, Search"},
+ 	{ 0x0065, "Read, Open, Parental, Search"},
+-    { 0x0066, "Write, Open, Parental, Search"},
+-    { 0x0067, "Read, Write, Open, Parental, Search"},
+-    { 0x0068, "Create, Parental, Search"},
++	{ 0x0066, "Write, Open, Parental, Search"},
++	{ 0x0067, "Read, Write, Open, Parental, Search"},
++	{ 0x0068, "Create, Parental, Search"},
+ 	{ 0x0069, "Read, Create, Parental, Search"},
+-    { 0x006a, "Write, Create, Parental, Search"},
+-    { 0x006b, "Read, Write, Create, Parental, Search"},
+-    { 0x006c, "Open, Create, Parental, Search"},
++	{ 0x006a, "Write, Create, Parental, Search"},
++	{ 0x006b, "Read, Write, Create, Parental, Search"},
++	{ 0x006c, "Open, Create, Parental, Search"},
+ 	{ 0x006d, "Read, Open, Create, Parental, Search"},
+-    { 0x006e, "Write, Open, Create, Parental, Search"},
+-    { 0x006f, "Read, Write, Open, Create, Parental, Search"},
+-    { 0x0070, "Delete, Parental, Search"},
++	{ 0x006e, "Write, Open, Create, Parental, Search"},
++	{ 0x006f, "Read, Write, Open, Create, Parental, Search"},
++	{ 0x0070, "Delete, Parental, Search"},
+ 	{ 0x0071, "Read, Delete, Parental, Search"},
+-    { 0x0072, "Write, Delete, Parental, Search"},
+-    { 0x0073, "Read, Write, Delete, Parental, Search"},
+-    { 0x0074, "Open, Delete, Parental, Search"},
++	{ 0x0072, "Write, Delete, Parental, Search"},
++	{ 0x0073, "Read, Write, Delete, Parental, Search"},
++	{ 0x0074, "Open, Delete, Parental, Search"},
+ 	{ 0x0075, "Read, Open, Delete, Parental, Search"},
+-    { 0x0076, "Write, Open, Delete, Parental, Search"},
+-    { 0x0077, "Read, Write, Open, Delete, Parental, Search"},
+-    { 0x0078, "Create, Delete, Parental, Search"},
++	{ 0x0076, "Write, Open, Delete, Parental, Search"},
++	{ 0x0077, "Read, Write, Open, Delete, Parental, Search"},
++	{ 0x0078, "Create, Delete, Parental, Search"},
+ 	{ 0x0079, "Read, Create, Delete, Parental, Search"},
+-    { 0x007a, "Write, Create, Delete, Parental, Search"},
+-    { 0x007b, "Read, Write, Create, Delete, Parental, Search"},
+-    { 0x007c, "Open, Create, Delete, Parental, Search"},
++	{ 0x007a, "Write, Create, Delete, Parental, Search"},
++	{ 0x007b, "Read, Write, Create, Delete, Parental, Search"},
++	{ 0x007c, "Open, Create, Delete, Parental, Search"},
+ 	{ 0x007d, "Read, Open, Create, Delete, Parental, Search"},
+-    { 0x007e, "Write, Open, Create, Delete, Parental, Search"},
+-    { 0x007f, "Read, Write, Open, Create, Delete, Parental, Search"},
+-    { 0x0080, "Modify"},
++	{ 0x007e, "Write, Open, Create, Delete, Parental, Search"},
++	{ 0x007f, "Read, Write, Open, Create, Delete, Parental, Search"},
++	{ 0x0080, "Modify"},
+ 	{ 0x0081, "Read, Modify"},
+-    { 0x0082, "Write, Modify"},
+-    { 0x0083, "Read, Write, Modify"},
+-    { 0x0084, "Open, Modify"},
++	{ 0x0082, "Write, Modify"},
++	{ 0x0083, "Read, Write, Modify"},
++	{ 0x0084, "Open, Modify"},
+ 	{ 0x0085, "Read, Open, Modify"},
+-    { 0x0086, "Write, Open, Modify"},
+-    { 0x0087, "Read, Write, Open, Modify"},
+-    { 0x0088, "Create, Modify"},
++	{ 0x0086, "Write, Open, Modify"},
++	{ 0x0087, "Read, Write, Open, Modify"},
++	{ 0x0088, "Create, Modify"},
+ 	{ 0x0089, "Read, Create, Modify"},
+-    { 0x008a, "Write, Create, Modify"},
+-    { 0x008b, "Read, Write, Create, Modify"},
+-    { 0x008c, "Open, Create, Modify"},
++	{ 0x008a, "Write, Create, Modify"},
++	{ 0x008b, "Read, Write, Create, Modify"},
++	{ 0x008c, "Open, Create, Modify"},
+ 	{ 0x008d, "Read, Open, Create, Modify"},
+-    { 0x008e, "Write, Open, Create, Modify"},
+-    { 0x008f, "Read, Write, Open, Create, Modify"},
+-    { 0x0090, "Delete, Modify"},
++	{ 0x008e, "Write, Open, Create, Modify"},
++	{ 0x008f, "Read, Write, Open, Create, Modify"},
++	{ 0x0090, "Delete, Modify"},
+ 	{ 0x0091, "Read, Delete, Modify"},
+-    { 0x0092, "Write, Delete, Modify"},
+-    { 0x0093, "Read, Write, Delete, Modify"},
+-    { 0x0094, "Open, Delete, Modify"},
++	{ 0x0092, "Write, Delete, Modify"},
++	{ 0x0093, "Read, Write, Delete, Modify"},
++	{ 0x0094, "Open, Delete, Modify"},
+ 	{ 0x0095, "Read, Open, Delete, Modify"},
+-    { 0x0096, "Write, Open, Delete, Modify"},
+-    { 0x0097, "Read, Write, Open, Delete, Modify"},
+-    { 0x0098, "Create, Delete, Modify"},
++	{ 0x0096, "Write, Open, Delete, Modify"},
++	{ 0x0097, "Read, Write, Open, Delete, Modify"},
++	{ 0x0098, "Create, Delete, Modify"},
+ 	{ 0x0099, "Read, Create, Delete, Modify"},
+-    { 0x009a, "Write, Create, Delete, Modify"},
+-    { 0x009b, "Read, Write, Create, Delete, Modify"},
+-    { 0x009c, "Open, Create, Delete, Modify"},
++	{ 0x009a, "Write, Create, Delete, Modify"},
++	{ 0x009b, "Read, Write, Create, Delete, Modify"},
++	{ 0x009c, "Open, Create, Delete, Modify"},
+ 	{ 0x009d, "Read, Open, Create, Delete, Modify"},
+-    { 0x009e, "Write, Open, Create, Delete, Modify"},
+-    { 0x009f, "Read, Write, Open, Create, Delete, Modify"},
+-    { 0x00a0, "Parental, Modify"},
++	{ 0x009e, "Write, Open, Create, Delete, Modify"},
++	{ 0x009f, "Read, Write, Open, Create, Delete, Modify"},
++	{ 0x00a0, "Parental, Modify"},
+ 	{ 0x00a1, "Read, Parental, Modify"},
+-    { 0x00a2, "Write, Parental, Modify"},
+-    { 0x00a3, "Read, Write, Parental, Modify"},
+-    { 0x00a4, "Open, Parental, Modify"},
++	{ 0x00a2, "Write, Parental, Modify"},
++	{ 0x00a3, "Read, Write, Parental, Modify"},
++	{ 0x00a4, "Open, Parental, Modify"},
+ 	{ 0x00a5, "Read, Open, Parental, Modify"},
+-    { 0x00a6, "Write, Open, Parental, Modify"},
+-    { 0x00a7, "Read, Write, Open, Parental, Modify"},
+-    { 0x00a8, "Create, Parental, Modify"},
++	{ 0x00a6, "Write, Open, Parental, Modify"},
++	{ 0x00a7, "Read, Write, Open, Parental, Modify"},
++	{ 0x00a8, "Create, Parental, Modify"},
+ 	{ 0x00a9, "Read, Create, Parental, Modify"},
+-    { 0x00aa, "Write, Create, Parental, Modify"},
+-    { 0x00ab, "Read, Write, Create, Parental, Modify"},
+-    { 0x00ac, "Open, Create, Parental, Modify"},
++	{ 0x00aa, "Write, Create, Parental, Modify"},
++	{ 0x00ab, "Read, Write, Create, Parental, Modify"},
++	{ 0x00ac, "Open, Create, Parental, Modify"},
+ 	{ 0x00ad, "Read, Open, Create, Parental, Modify"},
+-    { 0x00ae, "Write, Open, Create, Parental, Modify"},
+-    { 0x00af, "Read, Write, Open, Create, Parental, Modify"},
+-    { 0x00b0, "Delete, Parental, Modify"},
++	{ 0x00ae, "Write, Open, Create, Parental, Modify"},
++	{ 0x00af, "Read, Write, Open, Create, Parental, Modify"},
++	{ 0x00b0, "Delete, Parental, Modify"},
+ 	{ 0x00b1, "Read, Delete, Parental, Modify"},
+-    { 0x00b2, "Write, Delete, Parental, Modify"},
+-    { 0x00b3, "Read, Write, Delete, Parental, Modify"},
+-    { 0x00b4, "Open, Delete, Parental, Modify"},
++	{ 0x00b2, "Write, Delete, Parental, Modify"},
++	{ 0x00b3, "Read, Write, Delete, Parental, Modify"},
++	{ 0x00b4, "Open, Delete, Parental, Modify"},
+ 	{ 0x00b5, "Read, Open, Delete, Parental, Modify"},
+-    { 0x00b6, "Write, Open, Delete, Parental, Modify"},
+-    { 0x00b7, "Read, Write, Open, Delete, Parental, Modify"},
+-    { 0x00b8, "Create, Delete, Parental, Modify"},
++	{ 0x00b6, "Write, Open, Delete, Parental, Modify"},
++	{ 0x00b7, "Read, Write, Open, Delete, Parental, Modify"},
++	{ 0x00b8, "Create, Delete, Parental, Modify"},
+ 	{ 0x00b9, "Read, Create, Delete, Parental, Modify"},
+-    { 0x00ba, "Write, Create, Delete, Parental, Modify"},
+-    { 0x00bb, "Read, Write, Create, Delete, Parental, Modify"},
+-    { 0x00bc, "Open, Create, Delete, Parental, Modify"},
++	{ 0x00ba, "Write, Create, Delete, Parental, Modify"},
++	{ 0x00bb, "Read, Write, Create, Delete, Parental, Modify"},
++	{ 0x00bc, "Open, Create, Delete, Parental, Modify"},
+ 	{ 0x00bd, "Read, Open, Create, Delete, Parental, Modify"},
+-    { 0x00be, "Write, Open, Create, Delete, Parental, Modify"},
+-    { 0x00bf, "Read, Write, Open, Create, Delete, Parental, Modify"},
+-    { 0x00c0, "Search, Modify"},
++	{ 0x00be, "Write, Open, Create, Delete, Parental, Modify"},
++	{ 0x00bf, "Read, Write, Open, Create, Delete, Parental, Modify"},
++	{ 0x00c0, "Search, Modify"},
+ 	{ 0x00c1, "Read, Search, Modify"},
+-    { 0x00c2, "Write, Search, Modify"},
+-    { 0x00c3, "Read, Write, Search, Modify"},
+-    { 0x00c4, "Open, Search, Modify"},
++	{ 0x00c2, "Write, Search, Modify"},
++	{ 0x00c3, "Read, Write, Search, Modify"},
++	{ 0x00c4, "Open, Search, Modify"},
+ 	{ 0x00c5, "Read, Open, Search, Modify"},
+-    { 0x00c6, "Write, Open, Search, Modify"},
+-    { 0x00c7, "Read, Write, Open, Search, Modify"},
+-    { 0x00c8, "Create, Search, Modify"},
++	{ 0x00c6, "Write, Open, Search, Modify"},
++	{ 0x00c7, "Read, Write, Open, Search, Modify"},
++	{ 0x00c8, "Create, Search, Modify"},
+ 	{ 0x00c9, "Read, Create, Search, Modify"},
+-    { 0x00ca, "Write, Create, Search, Modify"},
+-    { 0x00cb, "Read, Write, Create, Search, Modify"},
+-    { 0x00cc, "Open, Create, Search, Modify"},
++	{ 0x00ca, "Write, Create, Search, Modify"},
++	{ 0x00cb, "Read, Write, Create, Search, Modify"},
++	{ 0x00cc, "Open, Create, Search, Modify"},
+ 	{ 0x00cd, "Read, Open, Create, Search, Modify"},
+-    { 0x00ce, "Write, Open, Create, Search, Modify"},
+-    { 0x00cf, "Read, Write, Open, Create, Search, Modify"},
+-    { 0x00d0, "Delete, Search, Modify"},
++	{ 0x00ce, "Write, Open, Create, Search, Modify"},
++	{ 0x00cf, "Read, Write, Open, Create, Search, Modify"},
++	{ 0x00d0, "Delete, Search, Modify"},
+ 	{ 0x00d1, "Read, Delete, Search, Modify"},
+-    { 0x00d2, "Write, Delete, Search, Modify"},
+-    { 0x00d3, "Read, Write, Delete, Search, Modify"},
+-    { 0x00d4, "Open, Delete, Search, Modify"},
++	{ 0x00d2, "Write, Delete, Search, Modify"},
++	{ 0x00d3, "Read, Write, Delete, Search, Modify"},
++	{ 0x00d4, "Open, Delete, Search, Modify"},
+ 	{ 0x00d5, "Read, Open, Delete, Search, Modify"},
+-    { 0x00d6, "Write, Open, Delete, Search, Modify"},
+-    { 0x00d7, "Read, Write, Open, Delete, Search, Modify"},
+-    { 0x00d8, "Create, Delete, Search, Modify"},
++	{ 0x00d6, "Write, Open, Delete, Search, Modify"},
++	{ 0x00d7, "Read, Write, Open, Delete, Search, Modify"},
++	{ 0x00d8, "Create, Delete, Search, Modify"},
+ 	{ 0x00d9, "Read, Create, Delete, Search, Modify"},
+-    { 0x00da, "Write, Create, Delete, Search, Modify"},
+-    { 0x00db, "Read, Write, Create, Delete, Search, Modify"},
+-    { 0x00dc, "Open, Create, Delete, Search, Modify"},
++	{ 0x00da, "Write, Create, Delete, Search, Modify"},
++	{ 0x00db, "Read, Write, Create, Delete, Search, Modify"},
++	{ 0x00dc, "Open, Create, Delete, Search, Modify"},
+ 	{ 0x00dd, "Read, Open, Create, Delete, Search, Modify"},
+-    { 0x00de, "Write, Open, Create, Delete, Search, Modify"},
+-    { 0x00df, "Read, Write, Open, Create, Delete, Search, Modify"},
+-    { 0x00e0, "Parental, Search, Modify"},
++	{ 0x00de, "Write, Open, Create, Delete, Search, Modify"},
++	{ 0x00df, "Read, Write, Open, Create, Delete, Search, Modify"},
++	{ 0x00e0, "Parental, Search, Modify"},
+ 	{ 0x00e1, "Read, Parental, Search, Modify"},
+-    { 0x00e2, "Write, Parental, Search, Modify"},
+-    { 0x00e3, "Read, Write, Parental, Search, Modify"},
+-    { 0x00e4, "Open, Parental, Search, Modify"},
++	{ 0x00e2, "Write, Parental, Search, Modify"},
++	{ 0x00e3, "Read, Write, Parental, Search, Modify"},
++	{ 0x00e4, "Open, Parental, Search, Modify"},
+ 	{ 0x00e5, "Read, Open, Parental, Search, Modify"},
+-    { 0x00e6, "Write, Open, Parental, Search, Modify"},
+-    { 0x00e7, "Read, Write, Open, Parental, Search, Modify"},
+-    { 0x00e8, "Create, Parental, Search, Modify"},
++	{ 0x00e6, "Write, Open, Parental, Search, Modify"},
++	{ 0x00e7, "Read, Write, Open, Parental, Search, Modify"},
++	{ 0x00e8, "Create, Parental, Search, Modify"},
+ 	{ 0x00e9, "Read, Create, Parental, Search, Modify"},
+-    { 0x00ea, "Write, Create, Parental, Search, Modify"},
+-    { 0x00eb, "Read, Write, Create, Parental, Search, Modify"},
+-    { 0x00ec, "Open, Create, Parental, Search, Modify"},
++	{ 0x00ea, "Write, Create, Parental, Search, Modify"},
++	{ 0x00eb, "Read, Write, Create, Parental, Search, Modify"},
++	{ 0x00ec, "Open, Create, Parental, Search, Modify"},
+ 	{ 0x00ed, "Read, Open, Create, Parental, Search, Modify"},
+-    { 0x00ee, "Write, Open, Create, Parental, Search, Modify"},
+-    { 0x00ef, "Read, Write, Open, Create, Parental, Search, Modify"},
+-    { 0x00f0, "Delete, Parental, Search, Modify"},
++	{ 0x00ee, "Write, Open, Create, Parental, Search, Modify"},
++	{ 0x00ef, "Read, Write, Open, Create, Parental, Search, Modify"},
++	{ 0x00f0, "Delete, Parental, Search, Modify"},
+ 	{ 0x00f1, "Read, Delete, Parental, Search, Modify"},
+-    { 0x00f2, "Write, Delete, Parental, Search, Modify"},
+-    { 0x00f3, "Read, Write, Delete, Parental, Search, Modify"},
+-    { 0x00f4, "Open, Delete, Parental, Search, Modify"},
++	{ 0x00f2, "Write, Delete, Parental, Search, Modify"},
++	{ 0x00f3, "Read, Write, Delete, Parental, Search, Modify"},
++	{ 0x00f4, "Open, Delete, Parental, Search, Modify"},
+ 	{ 0x00f5, "Read, Open, Delete, Parental, Search, Modify"},
+-    { 0x00f6, "Write, Open, Delete, Parental, Search, Modify"},
+-    { 0x00f7, "Read, Write, Open, Delete, Parental, Search, Modify"},
+-    { 0x00f8, "Create, Delete, Parental, Search, Modify"},
++	{ 0x00f6, "Write, Open, Delete, Parental, Search, Modify"},
++	{ 0x00f7, "Read, Write, Open, Delete, Parental, Search, Modify"},
++	{ 0x00f8, "Create, Delete, Parental, Search, Modify"},
+ 	{ 0x00f9, "Read, Create, Delete, Parental, Search, Modify"},
+-    { 0x00fa, "Write, Create, Delete, Parental, Search, Modify"},
+-    { 0x00fb, "Read, Write, Create, Delete, Parental, Search, Modify"},
+-    { 0x00fc, "Open, Create, Delete, Parental, Search, Modify"},
++	{ 0x00fa, "Write, Create, Delete, Parental, Search, Modify"},
++	{ 0x00fb, "Read, Write, Create, Delete, Parental, Search, Modify"},
++	{ 0x00fc, "Open, Create, Delete, Parental, Search, Modify"},
+ 	{ 0x00fd, "Read, Open, Create, Delete, Parental, Search, Modify"},
+-    { 0x00fe, "Write, Open, Create, Delete, Parental, Search, Modify"},
+-    { 0x00ff, "Read, Write, Open, Create, Delete, Parental, Search, Modify"},
+-    { 0x0100, "Supervisor"},
++	{ 0x00fe, "Write, Open, Create, Delete, Parental, Search, Modify"},
++	{ 0x00ff, "Read, Write, Open, Create, Delete, Parental, Search, Modify"},
++	{ 0x0100, "Supervisor"},
+ 	{ 0x0101, "Read, Supervisor"},
+-    { 0x0102, "Write, Supervisor"},
+-    { 0x0103, "Read, Write, Supervisor"},
+-    { 0x0104, "Open, Supervisor"},
++	{ 0x0102, "Write, Supervisor"},
++	{ 0x0103, "Read, Write, Supervisor"},
++	{ 0x0104, "Open, Supervisor"},
+ 	{ 0x0105, "Read, Open, Supervisor"},
+-    { 0x0106, "Write, Open, Supervisor"},
+-    { 0x0107, "Read, Write, Open, Supervisor"},
+-    { 0x0108, "Create, Supervisor"},
++	{ 0x0106, "Write, Open, Supervisor"},
++	{ 0x0107, "Read, Write, Open, Supervisor"},
++	{ 0x0108, "Create, Supervisor"},
+ 	{ 0x0109, "Read, Create, Supervisor"},
+-    { 0x010a, "Write, Create, Supervisor"},
+-    { 0x010b, "Read, Write, Create, Supervisor"},
+-    { 0x010c, "Open, Create, Supervisor"},
++	{ 0x010a, "Write, Create, Supervisor"},
++	{ 0x010b, "Read, Write, Create, Supervisor"},
++	{ 0x010c, "Open, Create, Supervisor"},
+ 	{ 0x010d, "Read, Open, Create, Supervisor"},
+-    { 0x010e, "Write, Open, Create, Supervisor"},
+-    { 0x010f, "Read, Write, Open, Create, Supervisor"},
+-    { 0x0110, "Delete, Supervisor"},
++	{ 0x010e, "Write, Open, Create, Supervisor"},
++	{ 0x010f, "Read, Write, Open, Create, Supervisor"},
++	{ 0x0110, "Delete, Supervisor"},
+ 	{ 0x0111, "Read, Delete, Supervisor"},
+-    { 0x0112, "Write, Delete, Supervisor"},
+-    { 0x0113, "Read, Write, Delete, Supervisor"},
+-    { 0x0114, "Open, Delete, Supervisor"},
++	{ 0x0112, "Write, Delete, Supervisor"},
++	{ 0x0113, "Read, Write, Delete, Supervisor"},
++	{ 0x0114, "Open, Delete, Supervisor"},
+ 	{ 0x0115, "Read, Open, Delete, Supervisor"},
+-    { 0x0116, "Write, Open, Delete, Supervisor"},
+-    { 0x0117, "Read, Write, Open, Delete, Supervisor"},
+-    { 0x0118, "Create, Delete, Supervisor"},
++	{ 0x0116, "Write, Open, Delete, Supervisor"},
++	{ 0x0117, "Read, Write, Open, Delete, Supervisor"},
++	{ 0x0118, "Create, Delete, Supervisor"},
+ 	{ 0x0119, "Read, Create, Delete, Supervisor"},
+-    { 0x011a, "Write, Create, Delete, Supervisor"},
+-    { 0x011b, "Read, Write, Create, Delete, Supervisor"},
+-    { 0x011c, "Open, Create, Delete, Supervisor"},
++	{ 0x011a, "Write, Create, Delete, Supervisor"},
++	{ 0x011b, "Read, Write, Create, Delete, Supervisor"},
++	{ 0x011c, "Open, Create, Delete, Supervisor"},
+ 	{ 0x011d, "Read, Open, Create, Delete, Supervisor"},
+-    { 0x011e, "Write, Open, Create, Delete, Supervisor"},
+-    { 0x011f, "Read, Write, Open, Create, Delete, Supervisor"},
+-    { 0x0120, "Parental, Supervisor"},
++	{ 0x011e, "Write, Open, Create, Delete, Supervisor"},
++	{ 0x011f, "Read, Write, Open, Create, Delete, Supervisor"},
++	{ 0x0120, "Parental, Supervisor"},
+ 	{ 0x0121, "Read, Parental, Supervisor"},
+-    { 0x0122, "Write, Parental, Supervisor"},
+-    { 0x0123, "Read, Write, Parental, Supervisor"},
+-    { 0x0124, "Open, Parental, Supervisor"},
++	{ 0x0122, "Write, Parental, Supervisor"},
++	{ 0x0123, "Read, Write, Parental, Supervisor"},
++	{ 0x0124, "Open, Parental, Supervisor"},
+ 	{ 0x0125, "Read, Open, Parental, Supervisor"},
+-    { 0x0126, "Write, Open, Parental, Supervisor"},
+-    { 0x0127, "Read, Write, Open, Parental, Supervisor"},
+-    { 0x0128, "Create, Parental, Supervisor"},
++	{ 0x0126, "Write, Open, Parental, Supervisor"},
++	{ 0x0127, "Read, Write, Open, Parental, Supervisor"},
++	{ 0x0128, "Create, Parental, Supervisor"},
+ 	{ 0x0129, "Read, Create, Parental, Supervisor"},
+-    { 0x012a, "Write, Create, Parental, Supervisor"},
+-    { 0x012b, "Read, Write, Create, Parental, Supervisor"},
+-    { 0x012c, "Open, Create, Parental, Supervisor"},
++	{ 0x012a, "Write, Create, Parental, Supervisor"},
++	{ 0x012b, "Read, Write, Create, Parental, Supervisor"},
++	{ 0x012c, "Open, Create, Parental, Supervisor"},
+ 	{ 0x012d, "Read, Open, Create, Parental, Supervisor"},
+-    { 0x012e, "Write, Open, Create, Parental, Supervisor"},
+-    { 0x012f, "Read, Write, Open, Create, Parental, Supervisor"},
+-    { 0x0130, "Delete, Parental, Supervisor"},
++	{ 0x012e, "Write, Open, Create, Parental, Supervisor"},
++	{ 0x012f, "Read, Write, Open, Create, Parental, Supervisor"},
++	{ 0x0130, "Delete, Parental, Supervisor"},
+ 	{ 0x0131, "Read, Delete, Parental, Supervisor"},
+-    { 0x0132, "Write, Delete, Parental, Supervisor"},
+-    { 0x0133, "Read, Write, Delete, Parental, Supervisor"},
+-    { 0x0134, "Open, Delete, Parental, Supervisor"},
++	{ 0x0132, "Write, Delete, Parental, Supervisor"},
++	{ 0x0133, "Read, Write, Delete, Parental, Supervisor"},
++	{ 0x0134, "Open, Delete, Parental, Supervisor"},
+ 	{ 0x0135, "Read, Open, Delete, Parental, Supervisor"},
+-    { 0x0136, "Write, Open, Delete, Parental, Supervisor"},
+-    { 0x0137, "Read, Write, Open, Delete, Parental, Supervisor"},
+-    { 0x0138, "Create, Delete, Parental, Supervisor"},
++	{ 0x0136, "Write, Open, Delete, Parental, Supervisor"},
++	{ 0x0137, "Read, Write, Open, Delete, Parental, Supervisor"},
++	{ 0x0138, "Create, Delete, Parental, Supervisor"},
+ 	{ 0x0139, "Read, Create, Delete, Parental, Supervisor"},
+-    { 0x013a, "Write, Create, Delete, Parental, Supervisor"},
+-    { 0x013b, "Read, Write, Create, Delete, Parental, Supervisor"},
+-    { 0x013c, "Open, Create, Delete, Parental, Supervisor"},
++	{ 0x013a, "Write, Create, Delete, Parental, Supervisor"},
++	{ 0x013b, "Read, Write, Create, Delete, Parental, Supervisor"},
++	{ 0x013c, "Open, Create, Delete, Parental, Supervisor"},
+ 	{ 0x013d, "Read, Open, Create, Delete, Parental, Supervisor"},
+-    { 0x013e, "Write, Open, Create, Delete, Parental, Supervisor"},
+-    { 0x013f, "Read, Write, Open, Create, Delete, Parental, Supervisor"},
+-    { 0x0140, "Search, Supervisor"},
++	{ 0x013e, "Write, Open, Create, Delete, Parental, Supervisor"},
++	{ 0x013f, "Read, Write, Open, Create, Delete, Parental, Supervisor"},
++	{ 0x0140, "Search, Supervisor"},
+ 	{ 0x0141, "Read, Search, Supervisor"},
+-    { 0x0142, "Write, Search, Supervisor"},
+-    { 0x0143, "Read, Write, Search, Supervisor"},
+-    { 0x0144, "Open, Search, Supervisor"},
++	{ 0x0142, "Write, Search, Supervisor"},
++	{ 0x0143, "Read, Write, Search, Supervisor"},
++	{ 0x0144, "Open, Search, Supervisor"},
+ 	{ 0x0145, "Read, Open, Search, Supervisor"},
+-    { 0x0146, "Write, Open, Search, Supervisor"},
+-    { 0x0147, "Read, Write, Open, Search, Supervisor"},
+-    { 0x0148, "Create, Search, Supervisor"},
++	{ 0x0146, "Write, Open, Search, Supervisor"},
++	{ 0x0147, "Read, Write, Open, Search, Supervisor"},
++	{ 0x0148, "Create, Search, Supervisor"},
+ 	{ 0x0149, "Read, Create, Search, Supervisor"},
+-    { 0x014a, "Write, Create, Search, Supervisor"},
+-    { 0x014b, "Read, Write, Create, Search, Supervisor"},
+-    { 0x014c, "Open, Create, Search, Supervisor"},
++	{ 0x014a, "Write, Create, Search, Supervisor"},
++	{ 0x014b, "Read, Write, Create, Search, Supervisor"},
++	{ 0x014c, "Open, Create, Search, Supervisor"},
+ 	{ 0x014d, "Read, Open, Create, Search, Supervisor"},
+-    { 0x014e, "Write, Open, Create, Search, Supervisor"},
+-    { 0x014f, "Read, Write, Open, Create, Search, Supervisor"},
+-    { 0x0150, "Delete, Search, Supervisor"},
++	{ 0x014e, "Write, Open, Create, Search, Supervisor"},
++	{ 0x014f, "Read, Write, Open, Create, Search, Supervisor"},
++	{ 0x0150, "Delete, Search, Supervisor"},
+ 	{ 0x0151, "Read, Delete, Search, Supervisor"},
+-    { 0x0152, "Write, Delete, Search, Supervisor"},
+-    { 0x0153, "Read, Write, Delete, Search, Supervisor"},
+-    { 0x0154, "Open, Delete, Search, Supervisor"},
++	{ 0x0152, "Write, Delete, Search, Supervisor"},
++	{ 0x0153, "Read, Write, Delete, Search, Supervisor"},
++	{ 0x0154, "Open, Delete, Search, Supervisor"},
+ 	{ 0x0155, "Read, Open, Delete, Search, Supervisor"},
+-    { 0x0156, "Write, Open, Delete, Search, Supervisor"},
+-    { 0x0157, "Read, Write, Open, Delete, Search, Supervisor"},
+-    { 0x0158, "Create, Delete, Search, Supervisor"},
++	{ 0x0156, "Write, Open, Delete, Search, Supervisor"},
++	{ 0x0157, "Read, Write, Open, Delete, Search, Supervisor"},
++	{ 0x0158, "Create, Delete, Search, Supervisor"},
+ 	{ 0x0159, "Read, Create, Delete, Search, Supervisor"},
+-    { 0x015a, "Write, Create, Delete, Search, Supervisor"},
+-    { 0x015b, "Read, Write, Create, Delete, Search, Supervisor"},
+-    { 0x015c, "Open, Create, Delete, Search, Supervisor"},
++	{ 0x015a, "Write, Create, Delete, Search, Supervisor"},
++	{ 0x015b, "Read, Write, Create, Delete, Search, Supervisor"},
++	{ 0x015c, "Open, Create, Delete, Search, Supervisor"},
+ 	{ 0x015d, "Read, Open, Create, Delete, Search, Supervisor"},
+-    { 0x015e, "Write, Open, Create, Delete, Search, Supervisor"},
+-    { 0x015f, "Read, Write, Open, Create, Delete, Search, Supervisor"},
+-    { 0x0160, "Parental, Search, Supervisor"},
++	{ 0x015e, "Write, Open, Create, Delete, Search, Supervisor"},
++	{ 0x015f, "Read, Write, Open, Create, Delete, Search, Supervisor"},
++	{ 0x0160, "Parental, Search, Supervisor"},
+ 	{ 0x0161, "Read, Parental, Search, Supervisor"},
+-    { 0x0162, "Write, Parental, Search, Supervisor"},
+-    { 0x0163, "Read, Write, Parental, Search, Supervisor"},
+-    { 0x0164, "Open, Parental, Search, Supervisor"},
++	{ 0x0162, "Write, Parental, Search, Supervisor"},
++	{ 0x0163, "Read, Write, Parental, Search, Supervisor"},
++	{ 0x0164, "Open, Parental, Search, Supervisor"},
+ 	{ 0x0165, "Read, Open, Parental, Search, Supervisor"},
+-    { 0x0166, "Write, Open, Parental, Search, Supervisor"},
+-    { 0x0167, "Read, Write, Open, Parental, Search, Supervisor"},
+-    { 0x0168, "Create, Parental, Search, Supervisor"},
++	{ 0x0166, "Write, Open, Parental, Search, Supervisor"},
++	{ 0x0167, "Read, Write, Open, Parental, Search, Supervisor"},
++	{ 0x0168, "Create, Parental, Search, Supervisor"},
+ 	{ 0x0169, "Read, Create, Parental, Search, Supervisor"},
+-    { 0x016a, "Write, Create, Parental, Search, Supervisor"},
+-    { 0x016b, "Read, Write, Create, Parental, Search, Supervisor"},
+-    { 0x016c, "Open, Create, Parental, Search, Supervisor"},
++	{ 0x016a, "Write, Create, Parental, Search, Supervisor"},
++	{ 0x016b, "Read, Write, Create, Parental, Search, Supervisor"},
++	{ 0x016c, "Open, Create, Parental, Search, Supervisor"},
+ 	{ 0x016d, "Read, Open, Create, Parental, Search, Supervisor"},
+-    { 0x016e, "Write, Open, Create, Parental, Search, Supervisor"},
+-    { 0x016f, "Read, Write, Open, Create, Parental, Search, Supervisor"},
+-    { 0x0170, "Delete, Parental, Search, Supervisor"},
++	{ 0x016e, "Write, Open, Create, Parental, Search, Supervisor"},
++	{ 0x016f, "Read, Write, Open, Create, Parental, Search, Supervisor"},
++	{ 0x0170, "Delete, Parental, Search, Supervisor"},
+ 	{ 0x0171, "Read, Delete, Parental, Search, Supervisor"},
+-    { 0x0172, "Write, Delete, Parental, Search, Supervisor"},
+-    { 0x0173, "Read, Write, Delete, Parental, Search, Supervisor"},
+-    { 0x0174, "Open, Delete, Parental, Search, Supervisor"},
++	{ 0x0172, "Write, Delete, Parental, Search, Supervisor"},
++	{ 0x0173, "Read, Write, Delete, Parental, Search, Supervisor"},
++	{ 0x0174, "Open, Delete, Parental, Search, Supervisor"},
+ 	{ 0x0175, "Read, Open, Delete, Parental, Search, Supervisor"},
+-    { 0x0176, "Write, Open, Delete, Parental, Search, Supervisor"},
+-    { 0x0177, "Read, Write, Open, Delete, Parental, Search, Supervisor"},
+-    { 0x0178, "Create, Delete, Parental, Search, Supervisor"},
++	{ 0x0176, "Write, Open, Delete, Parental, Search, Supervisor"},
++	{ 0x0177, "Read, Write, Open, Delete, Parental, Search, Supervisor"},
++	{ 0x0178, "Create, Delete, Parental, Search, Supervisor"},
+ 	{ 0x0179, "Read, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x017a, "Write, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x017b, "Read, Write, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x017c, "Open, Create, Delete, Parental, Search, Supervisor"},
++	{ 0x017a, "Write, Create, Delete, Parental, Search, Supervisor"},
++	{ 0x017b, "Read, Write, Create, Delete, Parental, Search, Supervisor"},
++	{ 0x017c, "Open, Create, Delete, Parental, Search, Supervisor"},
+ 	{ 0x017d, "Read, Open, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x017e, "Write, Open, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x017f, "Read, Write, Open, Create, Delete, Parental, Search, Supervisor"},
+-    { 0x0180, "Modify, Supervisor"},
++	{ 0x017e, "Write, Open, Create, Delete, Parental, Search, Supervisor"},
++	{ 0x017f, "Read, Write, Open, Create, Delete, Parental, Search, Supervisor"},
++	{ 0x0180, "Modify, Supervisor"},
+ 	{ 0x0181, "Read, Modify, Supervisor"},
+-    { 0x0182, "Write, Modify, Supervisor"},
+-    { 0x0183, "Read, Write, Modify, Supervisor"},
+-    { 0x0184, "Open, Modify, Supervisor"},
++	{ 0x0182, "Write, Modify, Supervisor"},
++	{ 0x0183, "Read, Write, Modify, Supervisor"},
++	{ 0x0184, "Open, Modify, Supervisor"},
+ 	{ 0x0185, "Read, Open, Modify, Supervisor"},
+-    { 0x0186, "Write, Open, Modify, Supervisor"},
+-    { 0x0187, "Read, Write, Open, Modify, Supervisor"},
+-    { 0x0188, "Create, Modify, Supervisor"},
++	{ 0x0186, "Write, Open, Modify, Supervisor"},
++	{ 0x0187, "Read, Write, Open, Modify, Supervisor"},
++	{ 0x0188, "Create, Modify, Supervisor"},
+ 	{ 0x0189, "Read, Create, Modify, Supervisor"},
+-    { 0x018a, "Write, Create, Modify, Supervisor"},
+-    { 0x018b, "Read, Write, Create, Modify, Supervisor"},
+-    { 0x018c, "Open, Create, Modify, Supervisor"},
++	{ 0x018a, "Write, Create, Modify, Supervisor"},
++	{ 0x018b, "Read, Write, Create, Modify, Supervisor"},
++	{ 0x018c, "Open, Create, Modify, Supervisor"},
+ 	{ 0x018d, "Read, Open, Create, Modify, Supervisor"},
+-    { 0x018e, "Write, Open, Create, Modify, Supervisor"},
+-    { 0x018f, "Read, Write, Open, Create, Modify, Supervisor"},
+-    { 0x0190, "Delete, Modify, Supervisor"},
++	{ 0x018e, "Write, Open, Create, Modify, Supervisor"},
++	{ 0x018f, "Read, Write, Open, Create, Modify, Supervisor"},
++	{ 0x0190, "Delete, Modify, Supervisor"},
+ 	{ 0x0191, "Read, Delete, Modify, Supervisor"},
+-    { 0x0192, "Write, Delete, Modify, Supervisor"},
+-    { 0x0193, "Read, Write, Delete, Modify, Supervisor"},
+-    { 0x0194, "Open, Delete, Modify, Supervisor"},
++	{ 0x0192, "Write, Delete, Modify, Supervisor"},
++	{ 0x0193, "Read, Write, Delete, Modify, Supervisor"},
++	{ 0x0194, "Open, Delete, Modify, Supervisor"},
+ 	{ 0x0195, "Read, Open, Delete, Modify, Supervisor"},
+-    { 0x0196, "Write, Open, Delete, Modify, Supervisor"},
+-    { 0x0197, "Read, Write, Open, Delete, Modify, Supervisor"},
+-    { 0x0198, "Create, Delete, Modify, Supervisor"},
++	{ 0x0196, "Write, Open, Delete, Modify, Supervisor"},
++	{ 0x0197, "Read, Write, Open, Delete, Modify, Supervisor"},
++	{ 0x0198, "Create, Delete, Modify, Supervisor"},
+ 	{ 0x0199, "Read, Create, Delete, Modify, Supervisor"},
+-    { 0x019a, "Write, Create, Delete, Modify, Supervisor"},
+-    { 0x019b, "Read, Write, Create, Delete, Modify, Supervisor"},
+-    { 0x019c, "Open, Create, Delete, Modify, Supervisor"},
++	{ 0x019a, "Write, Create, Delete, Modify, Supervisor"},
++	{ 0x019b, "Read, Write, Create, Delete, Modify, Supervisor"},
++	{ 0x019c, "Open, Create, Delete, Modify, Supervisor"},
+ 	{ 0x019d, "Read, Open, Create, Delete, Modify, Supervisor"},
+-    { 0x019e, "Write, Open, Create, Delete, Modify, Supervisor"},
+-    { 0x019f, "Read, Write, Open, Create, Delete, Modify, Supervisor"},
+-    { 0x01a0, "Parental, Modify, Supervisor"},
++	{ 0x019e, "Write, Open, Create, Delete, Modify, Supervisor"},
++	{ 0x019f, "Read, Write, Open, Create, Delete, Modify, Supervisor"},
++	{ 0x01a0, "Parental, Modify, Supervisor"},
+ 	{ 0x01a1, "Read, Parental, Modify, Supervisor"},
+-    { 0x01a2, "Write, Parental, Modify, Supervisor"},
+-    { 0x01a3, "Read, Write, Parental, Modify, Supervisor"},
+-    { 0x01a4, "Open, Parental, Modify, Supervisor"},
++	{ 0x01a2, "Write, Parental, Modify, Supervisor"},
++	{ 0x01a3, "Read, Write, Parental, Modify, Supervisor"},
++	{ 0x01a4, "Open, Parental, Modify, Supervisor"},
+ 	{ 0x01a5, "Read, Open, Parental, Modify, Supervisor"},
+-    { 0x01a6, "Write, Open, Parental, Modify, Supervisor"},
+-    { 0x01a7, "Read, Write, Open, Parental, Modify, Supervisor"},
+-    { 0x01a8, "Create, Parental, Modify, Supervisor"},
++	{ 0x01a6, "Write, Open, Parental, Modify, Supervisor"},
++	{ 0x01a7, "Read, Write, Open, Parental, Modify, Supervisor"},
++	{ 0x01a8, "Create, Parental, Modify, Supervisor"},
+ 	{ 0x01a9, "Read, Create, Parental, Modify, Supervisor"},
+-    { 0x01aa, "Write, Create, Parental, Modify, Supervisor"},
+-    { 0x01ab, "Read, Write, Create, Parental, Modify, Supervisor"},
+-    { 0x01ac, "Open, Create, Parental, Modify, Supervisor"},
++	{ 0x01aa, "Write, Create, Parental, Modify, Supervisor"},
++	{ 0x01ab, "Read, Write, Create, Parental, Modify, Supervisor"},
++	{ 0x01ac, "Open, Create, Parental, Modify, Supervisor"},
+ 	{ 0x01ad, "Read, Open, Create, Parental, Modify, Supervisor"},
+-    { 0x01ae, "Write, Open, Create, Parental, Modify, Supervisor"},
+-    { 0x01af, "Read, Write, Open, Create, Parental, Modify, Supervisor"},
+-    { 0x01b0, "Delete, Parental, Modify, Supervisor"},
++	{ 0x01ae, "Write, Open, Create, Parental, Modify, Supervisor"},
++	{ 0x01af, "Read, Write, Open, Create, Parental, Modify, Supervisor"},
++	{ 0x01b0, "Delete, Parental, Modify, Supervisor"},
+ 	{ 0x01b1, "Read, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b2, "Write, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b3, "Read, Write, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b4, "Open, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b2, "Write, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b3, "Read, Write, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b4, "Open, Delete, Parental, Modify, Supervisor"},
+ 	{ 0x01b5, "Read, Open, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b6, "Write, Open, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b7, "Read, Write, Open, Delete, Parental, Modify, Supervisor"},
+-    { 0x01b8, "Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b6, "Write, Open, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b7, "Read, Write, Open, Delete, Parental, Modify, Supervisor"},
++	{ 0x01b8, "Create, Delete, Parental, Modify, Supervisor"},
+ 	{ 0x01b9, "Read, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01ba, "Write, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01bb, "Read, Write, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01bc, "Open, Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01ba, "Write, Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01bb, "Read, Write, Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01bc, "Open, Create, Delete, Parental, Modify, Supervisor"},
+ 	{ 0x01bd, "Read, Open, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01be, "Write, Open, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01bf, "Read, Write, Open, Create, Delete, Parental, Modify, Supervisor"},
+-    { 0x01c0, "Search, Modify, Supervisor"},
++	{ 0x01be, "Write, Open, Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01bf, "Read, Write, Open, Create, Delete, Parental, Modify, Supervisor"},
++	{ 0x01c0, "Search, Modify, Supervisor"},
+ 	{ 0x01c1, "Read, Search, Modify, Supervisor"},
+-    { 0x01c2, "Write, Search, Modify, Supervisor"},
+-    { 0x01c3, "Read, Write, Search, Modify, Supervisor"},
+-    { 0x01c4, "Open, Search, Modify, Supervisor"},
++	{ 0x01c2, "Write, Search, Modify, Supervisor"},
++	{ 0x01c3, "Read, Write, Search, Modify, Supervisor"},
++	{ 0x01c4, "Open, Search, Modify, Supervisor"},
+ 	{ 0x01c5, "Read, Open, Search, Modify, Supervisor"},
+-    { 0x01c6, "Write, Open, Search, Modify, Supervisor"},
+-    { 0x01c7, "Read, Write, Open, Search, Modify, Supervisor"},
+-    { 0x01c8, "Create, Search, Modify, Supervisor"},
++	{ 0x01c6, "Write, Open, Search, Modify, Supervisor"},
++	{ 0x01c7, "Read, Write, Open, Search, Modify, Supervisor"},
++	{ 0x01c8, "Create, Search, Modify, Supervisor"},
+ 	{ 0x01c9, "Read, Create, Search, Modify, Supervisor"},
+-    { 0x01ca, "Write, Create, Search, Modify, Supervisor"},
+-    { 0x01cb, "Read, Write, Create, Search, Modify, Supervisor"},
+-    { 0x01cc, "Open, Create, Search, Modify, Supervisor"},
++	{ 0x01ca, "Write, Create, Search, Modify, Supervisor"},
++	{ 0x01cb, "Read, Write, Create, Search, Modify, Supervisor"},
++	{ 0x01cc, "Open, Create, Search, Modify, Supervisor"},
+ 	{ 0x01cd, "Read, Open, Create, Search, Modify, Supervisor"},
+-    { 0x01ce, "Write, Open, Create, Search, Modify, Supervisor"},
+-    { 0x01cf, "Read, Write, Open, Create, Search, Modify, Supervisor"},
+-    { 0x01d0, "Delete, Search, Modify, Supervisor"},
++	{ 0x01ce, "Write, Open, Create, Search, Modify, Supervisor"},
++	{ 0x01cf, "Read, Write, Open, Create, Search, Modify, Supervisor"},
++	{ 0x01d0, "Delete, Search, Modify, Supervisor"},
+ 	{ 0x01d1, "Read, Delete, Search, Modify, Supervisor"},
+-    { 0x01d2, "Write, Delete, Search, Modify, Supervisor"},
+-    { 0x01d3, "Read, Write, Delete, Search, Modify, Supervisor"},
+-    { 0x01d4, "Open, Delete, Search, Modify, Supervisor"},
++	{ 0x01d2, "Write, Delete, Search, Modify, Supervisor"},
++	{ 0x01d3, "Read, Write, Delete, Search, Modify, Supervisor"},
++	{ 0x01d4, "Open, Delete, Search, Modify, Supervisor"},
+ 	{ 0x01d5, "Read, Open, Delete, Search, Modify, Supervisor"},
+-    { 0x01d6, "Write, Open, Delete, Search, Modify, Supervisor"},
+-    { 0x01d7, "Read, Write, Open, Delete, Search, Modify, Supervisor"},
+-    { 0x01d8, "Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01d6, "Write, Open, Delete, Search, Modify, Supervisor"},
++	{ 0x01d7, "Read, Write, Open, Delete, Search, Modify, Supervisor"},
++	{ 0x01d8, "Create, Delete, Search, Modify, Supervisor"},
+ 	{ 0x01d9, "Read, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01da, "Write, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01db, "Read, Write, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01dc, "Open, Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01da, "Write, Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01db, "Read, Write, Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01dc, "Open, Create, Delete, Search, Modify, Supervisor"},
+ 	{ 0x01dd, "Read, Open, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01de, "Write, Open, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01df, "Read, Write, Open, Create, Delete, Search, Modify, Supervisor"},
+-    { 0x01e0, "Parental, Search, Modify, Supervisor"},
++	{ 0x01de, "Write, Open, Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01df, "Read, Write, Open, Create, Delete, Search, Modify, Supervisor"},
++	{ 0x01e0, "Parental, Search, Modify, Supervisor"},
+ 	{ 0x01e1, "Read, Parental, Search, Modify, Supervisor"},
+-    { 0x01e2, "Write, Parental, Search, Modify, Supervisor"},
+-    { 0x01e3, "Read, Write, Parental, Search, Modify, Supervisor"},
+-    { 0x01e4, "Open, Parental, Search, Modify, Supervisor"},
++	{ 0x01e2, "Write, Parental, Search, Modify, Supervisor"},
++	{ 0x01e3, "Read, Write, Parental, Search, Modify, Supervisor"},
++	{ 0x01e4, "Open, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01e5, "Read, Open, Parental, Search, Modify, Supervisor"},
+-    { 0x01e6, "Write, Open, Parental, Search, Modify, Supervisor"},
+-    { 0x01e7, "Read, Write, Open, Parental, Search, Modify, Supervisor"},
+-    { 0x01e8, "Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01e6, "Write, Open, Parental, Search, Modify, Supervisor"},
++	{ 0x01e7, "Read, Write, Open, Parental, Search, Modify, Supervisor"},
++	{ 0x01e8, "Create, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01e9, "Read, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01ea, "Write, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01eb, "Read, Write, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01ec, "Open, Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01ea, "Write, Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01eb, "Read, Write, Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01ec, "Open, Create, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01ed, "Read, Open, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01ee, "Write, Open, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01ef, "Read, Write, Open, Create, Parental, Search, Modify, Supervisor"},
+-    { 0x01f0, "Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01ee, "Write, Open, Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01ef, "Read, Write, Open, Create, Parental, Search, Modify, Supervisor"},
++	{ 0x01f0, "Delete, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01f1, "Read, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f2, "Write, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f3, "Read, Write, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f4, "Open, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f2, "Write, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f3, "Read, Write, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f4, "Open, Delete, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01f5, "Read, Open, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f6, "Write, Open, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f7, "Read, Write, Open, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01f8, "Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f6, "Write, Open, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f7, "Read, Write, Open, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01f8, "Create, Delete, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01f9, "Read, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01fa, "Write, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01fb, "Read, Write, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01fc, "Open, Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01fa, "Write, Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01fb, "Read, Write, Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01fc, "Open, Create, Delete, Parental, Search, Modify, Supervisor"},
+ 	{ 0x01fd, "Read, Open, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01fe, "Write, Open, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0x01ff, "Read, Write, Open, Create, Delete, Parental, Search, Modify, Supervisor"},
+-    { 0,    NULL }
++	{ 0x01fe, "Write, Open, Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0x01ff, "Read, Write, Open, Create, Delete, Parental, Search, Modify, Supervisor"},
++	{ 0,    NULL }
+ };
+ 
+ 
+@@ -1467,7 +1468,8 @@
+ #define NDS_PTYPE_TCPv6		0x0000000b
+ #define NDS_PTYPE_INTERNAL	0x0000000c
+ #define NDS_PTYPE_URL		0x0000000d
+-#define NDS_PTYPE_DNS       0x0000000e
++#define NDS_PTYPE_DNS           0x0000000e
++#define NDS_PTYPE_CNT       0x0000000f
+ 
+ static const value_string nds_protocol_type[] = {
+         { NDS_PTYPE_IPX,           "(IPX Protocol)" },
+@@ -1485,6 +1487,7 @@
+         { NDS_PTYPE_INTERNAL,      "(Internal Protocol)" },
+         { NDS_PTYPE_URL,           "(URL Protocol)" },
+         { NDS_PTYPE_DNS,           "(DNS Protocol)" },
++        { NDS_PTYPE_CNT,           "(Number of protocol types defined)" },
+ 	{ 0,	NULL }
+ };
+ 
+@@ -1623,7 +1626,7 @@
+ 
+ typedef struct {
+         ncp_req_eid_hash_key    *nds_eid;
+-        char   		            object_name[256];
++        char                    object_name[256];
+         char                    *object_class;
+ } ncp_req_eid_hash_value;
+ 
+@@ -1701,15 +1704,15 @@
+ static void
+ ncp_init_protocol(void)
+ {
+-    int i;
++	int i;
+ 
+   	/* fragment */
+   	fragment_table_init(&nds_fragment_table);
+   	reassembled_table_init(&nds_reassembled_table);
+ 
+-    for (i = 0; i < 99; i++) {
+-        frags[i].nds_frag = 0xfffffff0;
+-    }
++	for (i = 0; i < 99; i++) {
++		frags[i].nds_frag = 0xfffffff0;
++	}
+ 
+ 	if (ncp_req_hash) {
+ 		g_hash_table_foreach(ncp_req_hash, ncp_req_hash_cleanup, NULL);
+@@ -1735,7 +1738,7 @@
+ 			NCP_PACKET_INIT_COUNT * sizeof(ncp_req_hash_key),
+ 			G_ALLOC_ONLY);
+ 	ncp_req_hash_values = g_mem_chunk_new("ncp_req_hash_values",
+-			sizeof(ncp_req_hash_value),
++					      sizeof(ncp_req_hash_value),
+ 			NCP_PACKET_INIT_COUNT * sizeof(ncp_req_hash_value),
+ 			G_ALLOC_ONLY);
+ 	ncp_req_eid_hash_keys = g_mem_chunk_new("ncp_req_eid_hash_keys",
+@@ -1970,38 +1973,36 @@
+ 	guint	second;
+ } nw_time_t;
+ 
+-typedef struct {
+-	char   buffer[1024];
+-} nw_uni_t;
++#define NW_UNI_MAX 1024
+ 
+-#define VTYPE_NONE		0	/* no value */
+-#define VTYPE_UINT8		1
+-#define VTYPE_UINT16		2
+-#define VTYPE_UINT32		3
+-#define VTYPE_STRING		4
+-#define VTYPE_BITFIELD		5
+-#define VTYPE_MULTIVALUE_UINT32	6
+-#define VTYPE_BYTES		7
+-#define VTYPE_BOOLEAN		8
+-#define VTYPE_ITEM          9
++#define VTYPE_NONE                       0  /* no value */
++#define VTYPE_UINT8                      1
++#define VTYPE_UINT16                     2
++#define VTYPE_UINT32                     3
++#define VTYPE_STRING                     4
++#define VTYPE_BITFIELD                   5
++#define VTYPE_MULTIVALUE_UINT32          6
++#define VTYPE_BYTES                      7
++#define VTYPE_BOOLEAN                    8
++#define VTYPE_ITEM                       9
+ 
+-#define MVTYPE_ATTR_REQUEST		1
+-#define MVTYPE_ATTR_REPLY		2
+-#define MVTYPE_ATTR_REQUEST2		3
+-#define MVTYPE_READ_CLASS_REQ		4
+-#define MVTYPE_READ_REPLICAS		5
+-#define MVTYPE_MODIFY_ATTR_REQUEST	6
+-#define MVTYPE_ADDR_REFERRAL_REQUEST	7
+-#define MVTYPE_ADDR_REFERRAL_REPLY	8
+-#define MVTYPE_LOC_ADDR_REFERRAL_REPLY	9
++#define MVTYPE_ATTR_REQUEST              1
++#define MVTYPE_ATTR_REPLY                2
++#define MVTYPE_ATTR_REQUEST2             3
++#define MVTYPE_READ_CLASS_REQ            4
++#define MVTYPE_READ_REPLICAS             5
++#define MVTYPE_MODIFY_ATTR_REQUEST       6
++#define MVTYPE_ADDR_REFERRAL_REQUEST     7
++#define MVTYPE_ADDR_REFERRAL_REPLY       8
++#define MVTYPE_LOC_ADDR_REFERRAL_REPLY   9
+ #define MVTYPE_PROC_ENTRY_SPECIFIERS	10
+ #define MVTYPE_PRINT_TIMESTAMP		11
+ #define MVTYPE_LIST_PARTITIONS		12
+ #define MVTYPE_CLASS_NAMES		13
+ #define MVTYPE_MODIFY_CLASS		14
+ #define MVTYPE_ADD_ATTR_REQUEST         15
+-#define MVTYPE_PROCESS_TAGS         16
+-#define MVTYPE_PROCESS_ITERATOR     17
++#define MVTYPE_PROCESS_TAGS             16
++#define MVTYPE_PROCESS_ITERATOR         17
+ 
+ typedef struct {
+         guint8          vtype;
+@@ -2046,6 +2047,7 @@
+         guint8          mvtype;
+         guint32         vflags;
+         guint32         nds_version;
++        guint32         pflags; /* NDS Protocol Flags */
+ } nds_val;
+ 
+ 
+@@ -2124,23 +2126,24 @@
+ /* Convert a string from little-endian unicode to ascii.  At the moment we
+    fake it by taking every odd byte.  )-:  The caller must free the
+    result returned. */
++/* XXX This prints the proto_item name, but not its value. */
+ static proto_item*
+ padd_uni(ptvcursor_t *ptvc, const ptvc_record *rec)
+ {
+ 	proto_item      *item;
+-        nw_uni_t        nw_uni;
+-        guint            offset;
++	/* nw_uni_t        nw_uni; */
++	guint            offset;
+ 
+-	nw_uni.buffer[0] = '\0';
+-        offset = ptvcursor_current_offset(ptvc);
++	/* nw_uni.buffer[0] = '\0'; */
++	offset = ptvcursor_current_offset(ptvc);
+ 
+ 	item = ptvcursor_add(ptvc, *rec->hf_ptr,
+ 		rec->length, rec->endianness);
+ 
+ 	if (item) {
+ 		proto_item_set_text(item, "%s", get_item_name(item));
+-		proto_item_append_text(item, " %s",
+-				nw_uni.buffer);
++		/* proto_item_append_text(item, " %s",
++				nw_uni.buffer); */
+ 	}
+ 
+ 	return item;
+@@ -2444,23 +2447,29 @@
+        return 0;
+ }
+ 
+-static void
+-get_string(tvbuff_t* tvb, guint offset, guint str_length, char *dest_buf)
++static char *
++get_string(tvbuff_t* tvb, guint offset, guint str_length)
+ {
++        char *dest_buf;
+         gint i;
+         guint16 c_char;
+         gint length_remaining = 0;
++        gint max_length = (str_length < NW_UNI_MAX) ? str_length : NW_UNI_MAX;
+ 
+         length_remaining = tvb_length_remaining(tvb, offset);
+         if((gint)str_length > length_remaining)
+         {
+                 THROW(ReportedBoundsError);
+         }
+-        dest_buf[0] = '\0';
++
+         if(str_length == 0)
+         {
+-                return;
++                return "";
+         }
++
++        dest_buf = ep_alloc(max_length + 1);
++        dest_buf[0] = '\0';
++
+         for ( i = 0; i < (gint)str_length; i++ )
+         {
+                 c_char = tvb_get_guint8(tvb, offset );
+@@ -2487,9 +2496,9 @@
+                 if(length_remaining==1)
+                 {
+                         dest_buf[i+1] = '\0';
+-                        return;
++                        return dest_buf;
+                 }
+-                if (i >= 1023) { /* Don't process beyond the size of our varible */
++                if (i >= 1023) { /* Don't process beyond the size of our variable */
+                     break;       /* If string is too long just return the first 1K. */
+                 }
+         }
+@@ -2497,7 +2506,7 @@
+                 i = 0;
+         }
+         dest_buf[i] = '\0';
+-        return;
++        return dest_buf;
+ }
+ 
+ static void
+@@ -2732,46 +2741,49 @@
+  * and their associated values. Store results in passed buffer.
+  */
+ static void
+-build_expert_data(proto_tree *ncp_tree, char *hf_name, char *buffer, int repeat_lookup, gboolean search_structs)
++build_expert_data(proto_tree *ncp_tree, const char *hf_name, char *buffer,
++                  size_t buffer_size, int repeat_lookup,
++		  gboolean search_structs)
+ {
+-	proto_tree		*tree_pointer;
+-	proto_tree		*tree_loc;
+-	proto_tree		*struct_tree_pointer = NULL;
++    proto_tree     *tree_pointer;
++    proto_tree     *tree_loc;
++    proto_tree     *struct_tree_pointer = NULL;
+     char            temp_buffer[256]="\0";
+     gboolean        in_struct=FALSE;
+ 
+     tree_loc = ncp_tree->first_child;
+-	for (tree_pointer=tree_loc; tree_pointer!=NULL; tree_pointer=tree_pointer->next)
+-	{
++    for (tree_pointer=tree_loc; tree_pointer!=NULL; tree_pointer=tree_pointer->next)
++    {
+         /* We currently only go one structure deep in our search for values */
+         if (tree_pointer->first_child && !in_struct && search_structs) {
+             struct_tree_pointer = tree_pointer;
+             tree_pointer = tree_pointer->first_child;
+             in_struct=TRUE;
+         }
+-		if (strcmp(tree_pointer->finfo->hfinfo->abbrev, hf_name)==0)
+-		{
+-			switch (tree_pointer->finfo->hfinfo->type)
+-			{
+-            case 3:				/* uint8 */
+-            case 4:				/* uint16 */
+-                g_snprintf(buffer, get_finfo_length(tree_pointer->finfo)*4, "%d", get_finfo_value_integer(tree_pointer->finfo));
+-				break;
++        if (strcmp(tree_pointer->finfo->hfinfo->abbrev, hf_name)==0)
++        {
++            switch (tree_pointer->finfo->hfinfo->type)
++            {
++            case 3:                /* uint8 */
++            case 4:                /* uint16 */
++                g_snprintf(buffer, buffer_size, "%u", get_finfo_value_integer(tree_pointer->finfo));
++                break;
+ 
+             case 6:             /* uint32 */
+-                g_snprintf(buffer, get_finfo_length(tree_pointer->finfo)*4, "%08x", get_finfo_value_integer(tree_pointer->finfo));
+-				break;
++                g_snprintf(buffer, buffer_size, "%08x", get_finfo_value_integer(tree_pointer->finfo));
++                break;
+             case 17:
+             case 18:
+             case 19:
+-			case 20:			/* string */
+-		        uni_to_string(get_finfo_value_string(tree_pointer->finfo), get_finfo_length(tree_pointer->finfo), buffer);
++            case 20:            /* string */
++                /* XXX: Should we verify: buffer_size is as large as value returned by get_finfo_length(...)  ???      */
++                uni_to_string(get_finfo_value_string(tree_pointer->finfo), get_finfo_length(tree_pointer->finfo), buffer);
+                 if (repeat_lookup > 0) {
+                     if (strlen(temp_buffer) + strlen(buffer) < 250) {
+                         g_strlcat(temp_buffer, buffer, 256);
+                         repeat_lookup--;
+                         if (repeat_lookup == 0) {
+-                            g_strlcpy(buffer, temp_buffer, 256);
++                            g_strlcpy(buffer, temp_buffer, buffer_size);
+                             break;
+                         }
+                         else
+@@ -2791,23 +2803,23 @@
+                 }
+             case 21:
+             case 22:             /* Bytes */
+-                g_snprintf(buffer, (get_finfo_length(tree_pointer->finfo))*4, "%s", bytes_to_str(get_finfo_value_string(tree_pointer->finfo), get_finfo_length(tree_pointer->finfo)));
++                g_snprintf(buffer, buffer_size, "%s", bytes_to_str(get_finfo_value_string(tree_pointer->finfo), get_finfo_length(tree_pointer->finfo)));
+                 break;
+-			default:			/* Dont currently handle. Only need string, integers, and bytes */
+-				buffer = "Unsupported Expert Type\0";
+-				return;
+-			}
++            default:             /* Dont currently handle. Only need string, integers, and bytes */
++                g_snprintf(buffer, buffer_size, "Unsupported Expert Type");
++                return;
++            }
+             if (repeat_lookup ==0) {
+                 break;
+             }
+-		}
++        }
+         if (tree_pointer->next==NULL && in_struct && search_structs) {
+                 tree_pointer = struct_tree_pointer;
+                 in_struct=FALSE;
+         }
+-	}
++    }
+     if (strlen(buffer)==0) {
+-        buffer = "No Value\0";
++        g_snprintf(buffer, buffer_size, "No Value");
+     }
+     return;
+ }
+@@ -2832,38 +2844,48 @@
+             if (ncp_rec->func == 66) {
+                 char p_filehandle[15]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.file_handle", p_filehandle, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.file_handle", p_filehandle,
++                                  sizeof p_filehandle, 0, FALSE);
+ 
+                 expert_add_info_format(pinfo, NULL, PI_REQUEST_CODE, PI_CHAT, "Close file handle %s", p_filehandle);
+             }
+             /* The following allows for oplock level 1 file opens echoed to expert tap. */
+             if ((ncp_rec->func == 89 || ncp_rec->func == 87) && (ncp_rec->subfunc == 1 || ncp_rec->subfunc == 30 || ncp_rec->subfunc == 32 || ncp_rec->subfunc == 33)) {
+-                char oaction[2]="\0";
++                char oaction[3]="\0";
+                 char p_filename[256]="\0";
+-                char p_rights[2]="\0";
+-                char p_path_count[2]="\0";
++                char p_rights[3]="\0";
++                char p_path_count[3]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.open_create_mode", oaction, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.desired_access_rights", p_rights, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.path_count", p_path_count, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.open_create_mode", oaction,
++                                  sizeof oaction, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.desired_access_rights",
++                                  p_rights, sizeof p_rights, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.path_count", p_path_count,
++                                  sizeof p_path_count, 0, FALSE);
+ 
+                 if (ncp_rec->func == 87) {
+-                    build_expert_data(ncp_tree, "ncp.path", p_filename, atoi(p_path_count), FALSE);
++                    build_expert_data(ncp_tree, "ncp.path", p_filename,
++                                      sizeof p_filename,  atoi(p_path_count),
++				      FALSE);
+                 }
+                 else
+                 {
+-                    build_expert_data(ncp_tree, "ncp.path16", p_filename, atoi(p_path_count), FALSE);
++                    build_expert_data(ncp_tree, "ncp.path16", p_filename,
++                                      sizeof p_filename,  atoi(p_path_count),
++                                      FALSE);
+                 }
+ 
+                 expert_add_info_format(pinfo, NULL, PI_REQUEST_CODE, PI_CHAT, "%s: %s, Rights:(%s)", match_strval((atoi(oaction) & 0xeb), open_create_mode_vals), p_filename, match_strval((atoi(p_rights) & 0x5f), ncp_rights_vals));
+             }
+             /* The following allows for oplock ack's and level 2 request echoed to expert tap. */
+             if (ncp_rec->func == 87 && ncp_rec->subfunc == 34) {
+-                char cc_function[2]="\0";
++                char cc_function[3]="\0";
+                 char p_filehandle[15]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.cc_file_handle", p_filehandle, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.cc_function", cc_function, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.cc_file_handle",
++                                  p_filehandle, sizeof p_filehandle, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.cc_function",
++                                  cc_function, sizeof cc_function, 0, FALSE);
+ 
+                 expert_add_info_format(pinfo, NULL, PI_REQUEST_CODE, PI_CHAT, "Op-lock on handle %s - %s", p_filehandle, match_strval(atoi(cc_function), ncp_cc_function_vals));
+             }
+@@ -2873,9 +2895,12 @@
+                 char n_rights[20]="\0";
+                 char p_filehandle[15]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.file_handle", p_filehandle, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.access_rights_mask_word", p_rights, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.new_access_rights_mask", n_rights, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.file_handle",
++                                  p_filehandle, sizeof p_filehandle, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.access_rights_mask_word",
++                                  p_rights, sizeof p_rights, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.new_access_rights_mask",
++                                  n_rights, sizeof n_rights, 0, FALSE);
+                 expert_add_info_format(pinfo, NULL, PI_REQUEST_CODE, PI_CHAT, "Change handle %s rights from:(%s) to:(%s)", p_filehandle, match_strval((atoi(p_rights) & 0x1ff), access_rights_vals), match_strval((atoi(n_rights) & 0x1ff), access_rights_vals));
+             }
+         }
+@@ -2886,19 +2911,22 @@
+         if (ncp_echo_file) { /* Echo File System Data */
+             /* The following allows for oplock level 1 file opens echoed to expert tap. */
+             if ((ncp_rec->func == 89 || ncp_rec->func == 87) && (ncp_rec->subfunc == 32 || ncp_rec->subfunc == 1)) {
+-                char oaction[2]="\0";
+-                char oplockflg[2]="\0";
++                char oaction[3]="\0";
++                char oplockflg[3]="\0";
+                 char p_filehandle[15]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.open_create_action", oaction, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.file_handle", p_filehandle, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.open_create_action",
++                                  oaction, sizeof oaction, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.file_handle",
++                                  p_filehandle, sizeof p_filehandle, 0, FALSE);
+ 
+                 if (ncp_rec->subfunc == 1) {
+                     expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "%s - File handle %s", match_strval((atoi(oaction) & 0x8f), open_create_action_vals), p_filehandle);
+                 }
+                 else
+                 {
+-                    build_expert_data(ncp_tree, "ncp.o_c_ret_flags", oplockflg, 0, FALSE);
++                    build_expert_data(ncp_tree, "ncp.o_c_ret_flags",
++                                      oplockflg, sizeof oplockflg, 0, FALSE);
+                     expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "%s - File handle %s, %s", match_strval((atoi(oaction) & 0x8f), open_create_action_vals), p_filehandle, match_strval(atoi(oplockflg), ncp_o_c_ret_flags_vals));
+                 }
+             }
+@@ -2907,8 +2935,10 @@
+                 char p_rights[20]="\0";
+                 char p_filehandle[15]="\0";
+ 
+-                build_expert_data(ncp_tree, "ncp.file_handle", p_filehandle, 0, FALSE);
+-                build_expert_data(ncp_tree, "ncp.effective_rights", p_rights, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.file_handle",
++                                  p_filehandle, sizeof p_filehandle, 0, FALSE);
++                build_expert_data(ncp_tree, "ncp.effective_rights",
++                                  p_rights, sizeof p_rights, 0, FALSE);
+                 expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Handle %s effective rights:(%s)", p_filehandle, match_strval((atoi(p_rights) & 0x1ff), access_rights_vals));
+             }
+         }
+@@ -2921,11 +2951,16 @@
+             char p_lang[3]="\0";
+ 
+             /* Get Server name and version info */
+-            build_expert_data(ncp_tree, "ncp.server_name", fsname, 0, FALSE);
+-            build_expert_data(ncp_tree, "ncp.product_major_version", p_maj_ver, 0, FALSE);
+-            build_expert_data(ncp_tree, "ncp.product_minor_version", p_min_ver, 0, FALSE);
+-            build_expert_data(ncp_tree, "ncp.product_revision_version", p_rev, 0, FALSE);
+-            build_expert_data(ncp_tree, "ncp.os_language_id", p_lang, 0, FALSE);
++            build_expert_data(ncp_tree, "ncp.server_name",
++                              fsname, sizeof fsname, 0, FALSE);
++            build_expert_data(ncp_tree, "ncp.product_major_version",
++                              p_maj_ver, sizeof p_maj_ver, 0, FALSE);
++            build_expert_data(ncp_tree, "ncp.product_minor_version",
++                              p_min_ver, sizeof p_min_ver, 0, FALSE);
++            build_expert_data(ncp_tree, "ncp.product_revision_version",
++                              p_rev, sizeof p_rev, 0, FALSE);
++            build_expert_data(ncp_tree, "ncp.os_language_id",
++                              p_lang, sizeof p_lang, 0, FALSE);
+             expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Server %s, version %s.%s, support pack %s, language %s", fsname,
+                                    p_maj_ver, p_min_ver, p_rev, p_lang);
+         }
+@@ -2955,16 +2990,16 @@
+         guint16         rstate = 0;
+         guint16         rnum = 0;
+         guint16         revent = 0;
+-	    gint		    length_remaining;
++        gint            length_remaining;
+         nstime_t        ns;
+         gboolean        entry_rights = FALSE;
+         nds_val         temp_values;
+ 
+         voffset = vvalues->voffset;
+-        if(tvb_get_guint8(tvb, voffset) == 0x00)
++        /*if(tvb_get_guint8(tvb, voffset) == 0x00)
+         {
+                 voffset = voffset+2;
+-        }
++        }*/
+ 
+         number_of_values = tvb_get_letohl(tvb, voffset);
+ 
+@@ -2985,220 +3020,221 @@
+                 oldvoffset = voffset;
+                 switch(syntax_type)
+                 {
+-                       case 0x00000006:        /* Case Insensitive List */
+-                       case 0x00000012:        /* Postal Address */
+-                               voffset += align_4(tvb, voffset);
+-                               voffset = voffset+4;
+-                               number_of_items = tvb_get_letohl(tvb, voffset);
+-                               voffset = voffset+4;
+-                               for (r=1; r<=number_of_items; r++)
+-                               {
+-                                       value1 = tvb_get_letohl(tvb, voffset);
+-                                       voffset = voffset + 4;
+-                                       get_string(tvb, voffset, value1, vvalues->vstring);
+-                                       proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                           value1, vvalues->vstring);
+-                                       voffset = voffset + value1;
+-                                       voffset += align_4(tvb, voffset);
+-                               }
+-                               break;
+-                        case 0x00000007:        /* Boolean */
+-                               voffset+=4;                            /* this is always just a parameter count of 1, so ignore */
+-                               value1 = tvb_get_guint8(tvb, voffset); /* Boolean value */
+-                               if (value1==0)
+-                               {
+-                                       vvalues->vstring = "False";
+-                               }
+-                               else
+-                               {
+-                                       vvalues->vstring = "True";
+-                               }
+-                               tvb_ensure_bytes_exist(tvb, voffset, 1);
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                           1, vvalues->vstring);
+-                               voffset=voffset+1;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000009:        /* Binary String */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               length_remaining = tvb_length_remaining(tvb, voffset);
+-                               if(length_remaining == -1 || value1 > (guint32) length_remaining)
+-                               {
+-                                        break;
+-                               }
+-                               voffset += 4;
+-                               tvb_ensure_bytes_exist(tvb, voffset, value1);
+-                               proto_tree_add_bytes(nvtree, hf_value_bytes, tvb, voffset, value1, tvb_get_ptr(tvb, voffset, value1));
+-                               voffset += value1;
+-                               voffset += (value1%2);
+-                               break;
+-                       case 0x0000000d:        /* Binary String List */
+-                           value1 = tvb_get_letohl(tvb, voffset); /* Overall length of field list */
+-                           length_remaining = tvb_length_remaining(tvb, voffset);
+-                           if(length_remaining == -1 || value1 > (guint32) length_remaining)
+-                           {
+-                                    break;
+-                           }
+-                           voffset += 4;
+-                           tvb_ensure_bytes_exist(tvb, voffset, value1);
+-                           number_of_items = tvb_get_letohl(tvb, voffset);
+-                           voffset = voffset+4;
+-                           for (r=1; r<=number_of_items; r++)
+-                           {
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               length_remaining = tvb_length_remaining(tvb, voffset);
+-                               if(length_remaining == -1 || value1 > (guint32) length_remaining)
+-                               {
+-                                        break;
+-                               }
+-                               voffset += 4;
+-                               tvb_ensure_bytes_exist(tvb, voffset, value1);
+-                               proto_tree_add_bytes(nvtree, hf_value_bytes, tvb, voffset, value1, tvb_get_ptr(tvb, voffset, value1));
+-                               voffset += value1;
+-                               voffset += (value1%2);
+-                           }
+-                           break;
+-                       case 0x00000015:        /* Stream */
+-                           value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                           length_remaining = tvb_length_remaining(tvb, voffset);
+-                           if(length_remaining == -1 || value1 > (guint32) length_remaining)
+-                           {
+-                                    break;
+-                           }
+-                           proto_tree_add_text(nvtree, tvb, voffset, 4, "No value, Open stream file for data.");
+-                           voffset += 4;
+-                           voffset += value1;
+-                           voffset += (value1%2);
+-                           break;
+-                       case 0x00000008:        /* Signed Integer */
+-                       case 0x00000016:        /* Counter */
+-                       case 0x0000001b:        /* Interval */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               voffset = voffset+4;
+-                               value2 = tvb_get_letohl(tvb, voffset); /* Value */
+-                               tvb_ensure_bytes_exist(tvb, voffset, value1);
+-                               if (strcmp(vvalues->vstring, "zendmSearchType")==0) {
+-                                   proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                            value1, value2, "Value (%d) = %s", value2, match_strval(value2, zensearchenum));
+-                               }
+-                               else
+-                               {
+-                                   proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                            value1, value2, "Value %d", value2);
+-                               }
+-                               voffset = voffset+4;
+-                               break;
+-                       case 0x0000000b:        /* Fax Number */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value1, vvalues->vstring);
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                        value1, vvalues->vstring);
+-                               voffset = voffset + value1;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x0000000c:        /* Network Address */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               voffset = voffset + 4;
+-                               value2 = tvb_get_letohl(tvb, voffset); /* type of Protocol */
+-                               valuestr = match_strval(value2, nds_protocol_type);
+-                               if (valuestr == NULL)
+-                               {
+-                                               valuestr="(Undefined Protocol)";
+-                               }
+-                               tvb_ensure_bytes_exist(tvb, voffset, value1);
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                   value1, value2, valuestr, value2);
+-                               voffset = voffset+4;
+-                               value3 = tvb_get_letohl(tvb, voffset); /* length of address */
+-                               voffset = voffset+4;
+-                               switch (value2)
+-                               {
+-                                        case NDS_PTYPE_IPX:
++                        case 0x00000006:        /* Case Insensitive List */
++                        case 0x00000012:        /* Postal Address */
++                                voffset += align_4(tvb, voffset);
++                                voffset = voffset+4;
++                                number_of_items = tvb_get_letohl(tvb, voffset);
++                                voffset = voffset+4;
++                                for (r=1; r<=number_of_items; r++)
++                                {
++                                        value1 = tvb_get_letohl(tvb, voffset);
++                                        voffset = voffset + 4;
++                                        vvalues->vstring = get_string(tvb, voffset, value1);
++                                        proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++                                            value1, vvalues->vstring);
++                                        voffset = voffset + value1;
++                                        voffset += align_4(tvb, voffset);
++                                }
++                                break;
++                         case 0x00000007:        /* Boolean */
++                                voffset+=4;                            /* this is always just a parameter count of 1, so ignore */
++                                value1 = tvb_get_guint8(tvb, voffset); /* Boolean value */
++                                if (value1==0)
++                                {
++                                        vvalues->vstring = "False";
++                                }
++                                else
++                                {
++                                        vvalues->vstring = "True";
++                                }
++                                tvb_ensure_bytes_exist(tvb, voffset, 1);
++                                proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++                                            1, vvalues->vstring);
++                                voffset=voffset+1;
++                                voffset += align_4(tvb, voffset);
++                                break;
++                        case 0x00000009:        /* Binary String */
++                                value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++                                length_remaining = tvb_length_remaining(tvb, voffset);
++                                if(length_remaining == -1 || value1 > (guint32) length_remaining)
++                                {
++                                         break;
++                                }
++                                voffset += 4;
++                                tvb_ensure_bytes_exist(tvb, voffset, value1);
++                                proto_tree_add_bytes(nvtree, hf_value_bytes, tvb, voffset, value1, tvb_get_ptr(tvb, voffset, value1));
++                                voffset += value1;
++                                voffset += (value1%2);
++                                break;
++                        case 0x0000000d:        /* Binary String List */
++			        value1 = tvb_get_letohl(tvb, voffset); /* Overall length of field list */
++                                length_remaining = tvb_length_remaining(tvb, voffset);
++                                if(length_remaining == -1 || value1 > (guint32) length_remaining)
++                                {
++                                         break;
++                                }
++                                voffset += 4;
++                                tvb_ensure_bytes_exist(tvb, voffset, value1);
++                                number_of_items = tvb_get_letohl(tvb, voffset);
++                                voffset = voffset+4;
++                                for (r=1; r<=number_of_items; r++)
++                                {
++					value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++					length_remaining = tvb_length_remaining(tvb, voffset);
++					if(length_remaining == -1 || value1 > (guint32) length_remaining)
++					{
++						break;
++					}
++					voffset += 4;
++					tvb_ensure_bytes_exist(tvb, voffset, value1);
++					proto_tree_add_bytes(nvtree, hf_value_bytes, tvb, voffset, value1, tvb_get_ptr(tvb, voffset, value1));
++					voffset += value1;
++					voffset += (value1%2);
++				}
++				break;
++                        case 0x00000015:        /* Stream */
++			        value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				length_remaining = tvb_length_remaining(tvb, voffset);
++				if(length_remaining == -1 || value1 > (guint32) length_remaining)
++				{
++					break;
++				}
++				proto_tree_add_text(nvtree, tvb, voffset, 4, "No value, Open stream file for data.");
++				voffset += 4;
++				voffset += value1;
++				voffset += (value1%2);
++				break;
++                        case 0x00000008:        /* Signed Integer */
++		        case 0x00000016:        /* Counter */
++                        case 0x0000001b:        /* Interval */
++			        value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				voffset = voffset+4;
++				value2 = tvb_get_letohl(tvb, voffset); /* Value */
++				tvb_ensure_bytes_exist(tvb, voffset, value1);
++				if (strcmp(vvalues->vstring, "zendmSearchType")==0) {
++					proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++								   value1, value2, 
++								   "Value (%d) = %s", value2, match_strval(value2, zensearchenum));
++				}
++				else
++				{
++					proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++								   value1, value2, "Value %d", value2);
++				}
++				voffset = voffset+4;
++				break;
++                        case 0x0000000b:        /* Fax Number */
++                                value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value1);
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value1, vvalues->vstring);
++				voffset = voffset + value1;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x0000000c:        /* Network Address */
++                                value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				voffset = voffset + 4;
++				value2 = tvb_get_letohl(tvb, voffset); /* type of Protocol */
++				valuestr = match_strval(value2, nds_protocol_type);
++				if (valuestr == NULL)
++                                {
++					valuestr="(Undefined Protocol)";
++				}
++				tvb_ensure_bytes_exist(tvb, voffset, value1);
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   value1, value2, valuestr, value2);
++				voffset = voffset+4;
++				value3 = tvb_get_letohl(tvb, voffset); /* length of address */
++				voffset = voffset+4;
++				switch (value2)
++				{
++				        case NDS_PTYPE_IPX:
+                                                 proto_tree_add_item(nvtree, hf_nds_net, tvb, voffset, 4, FALSE);
+-		                                        proto_tree_add_item(nvtree, hf_nds_node, tvb, voffset+4, 6, FALSE);
+-		                                        proto_tree_add_item(nvtree, hf_nds_socket, tvb, voffset+10, 2, FALSE);
++                                                proto_tree_add_item(nvtree, hf_nds_node, tvb, voffset+4, 6, FALSE);
++                                                proto_tree_add_item(nvtree, hf_nds_socket, tvb, voffset+10, 2, FALSE);
+                                                 break;
+                                         case NDS_PTYPE_IP:
+-                                            if (value3 > 4) {
+-                                                proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
+-                                                voffset += 2;
+-                                            }
+-	                                        proto_tree_add_item(nvtree, hf_add_ref_ip, tvb, voffset, 4, FALSE);
+-                                            break;
++                                                if (value3 > 4) {
++							proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
++							voffset += 2;
++						}
++						proto_tree_add_item(nvtree, hf_add_ref_ip, tvb, voffset, 4, FALSE);
++						break;
+                                         case NDS_PTYPE_UDP:
+-                                            if (value3 > 4) {
+-                                                proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
+-                                                voffset += 2;
+-                                            }
+-	                                        proto_tree_add_item(nvtree, hf_add_ref_udp, tvb, voffset, 4, FALSE);
+-                                            break;
++                                                if (value3 > 4) {
++							proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
++							voffset += 2;
++						}
++						proto_tree_add_item(nvtree, hf_add_ref_udp, tvb, voffset, 4, FALSE);
++						break;
+                                         case NDS_PTYPE_TCP:
+-		                                proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
++					        proto_tree_add_item(nvtree, hf_nds_port, tvb, voffset, 2, FALSE);
+                                                 proto_tree_add_item(nvtree, hf_add_ref_tcp, tvb, voffset+2, 4, FALSE);
+                                                 break;
+                                         case NDS_PTYPE_URL:
+                                         case NDS_PTYPE_DNS:
+-                                                get_string(tvb, voffset, value3, vvalues->vstring);
++                                                vvalues->vstring = get_string(tvb, voffset, value3);
+                                                 proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                                        value3, vvalues->vstring);
++								      value3, vvalues->vstring);
+                                                 break;
+                                         default:
+                                                 break;
+-                               }
+-                               voffset = voffset + value3;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x0000000f:        /* File System Path */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               voffset = voffset + 4;
+-                               value2 = tvb_get_letohl(tvb, voffset); /* Name Space */
+-                               valuestr = match_strval(value2, name_space_type);
+-                               if (valuestr == NULL)
+-                               {
++                                }
++				voffset = voffset + value3;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x0000000f:        /* File System Path */
++                                value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				voffset = voffset + 4;
++				value2 = tvb_get_letohl(tvb, voffset); /* Name Space */
++				valuestr = match_strval(value2, name_space_type);
++				if (valuestr == NULL)
++				{
+                                         valuestr = "Unknown Name Space";
+-                               }
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                        4, valuestr);
+-                               voffset = voffset+4;
+-                               value3 = tvb_get_letohl(tvb, voffset); /* Length of Volume name */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value3, vvalues->vstring);
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                        value3, vvalues->vstring);
+-                               voffset = voffset+value3;
+-                               voffset += align_4(tvb, voffset);
+-                               value4 = tvb_get_letohl(tvb, voffset); /* Length of Path name */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value4, vvalues->vstring);
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                        value4, vvalues->vstring);
+-                               voffset = voffset+value4;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000010:        /* Replica Pointer */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* length of field */
+-                               voffset = voffset + 4;
+-                               value2 = tvb_get_letohl(tvb, voffset); /* Length of Server name */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value2, vvalues->vstring);
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                        value2, vvalues->vstring);
+-                               voffset = voffset+value2;
+-                               voffset += align_4(tvb, voffset);
+-                               rtype = tvb_get_letohs(tvb, voffset); /* replica type */
+-                               valuestr = match_strval(rtype, nds_replica_type);
+-                               if (valuestr == NULL)
+-                               {
++				}
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      4, valuestr);
++				voffset = voffset+4;
++				value3 = tvb_get_letohl(tvb, voffset); /* Length of Volume name */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value3);
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value3, vvalues->vstring);
++				voffset = voffset+value3;
++				voffset += align_4(tvb, voffset);
++				value4 = tvb_get_letohl(tvb, voffset); /* Length of Path name */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value4);
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value4, vvalues->vstring);
++				voffset = voffset+value4;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x00000010:        /* Replica Pointer */
++                                value1 = tvb_get_letohl(tvb, voffset); /* length of field */
++				voffset = voffset + 4;
++				value2 = tvb_get_letohl(tvb, voffset); /* Length of Server name */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value2);
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value2, vvalues->vstring);
++				voffset = voffset+value2;
++				voffset += align_4(tvb, voffset);
++				rtype = tvb_get_letohs(tvb, voffset); /* replica type */
++				valuestr = match_strval(rtype, nds_replica_type);
++				if (valuestr == NULL)
++				{
+                                         valuestr="(Unknown Replica Type)";
+-                               }
+-                               proto_tree_add_string(nvtree, hf_replica_type, tvb, voffset,
+-                                        2, valuestr);
+-                               voffset = voffset+2;
+-                               rstate = tvb_get_letohs(tvb, voffset); /* replica state */
+-                               valuestr = match_strval(rstate, nds_replica_state);
+-                               if (valuestr == NULL)
+-                               {
++				}
++				proto_tree_add_string(nvtree, hf_replica_type, tvb, voffset,
++						      2, valuestr);
++				voffset = voffset+2;
++				rstate = tvb_get_letohs(tvb, voffset); /* replica state */
++				valuestr = match_strval(rstate, nds_replica_state);
++				if (valuestr == NULL)
++				{
+                                         valuestr="(Unknown Replica State)";
+                                }
+                                proto_tree_add_string(nvtree, hf_replica_state, tvb, voffset,
+@@ -3208,23 +3244,35 @@
+                                proto_tree_add_uint_format(nvtree, hf_replica_number, tvb, voffset,
+                                         4, value3, "Replica Number %d", value3);
+                                voffset = voffset+4;
++                               if(vvalues->pflags & 0x8000)
++                               {
++                                   /* If this request flag is set then this is a server. Server structures
++                                    * include the RootID as part of the replica data. */
++                                   proto_tree_add_item(nvtree, hf_nds_partition_root_id, tvb, voffset, 4, FALSE);
++                                   voffset += 4; 
++                               }
+                                number_of_items = tvb_get_letohl(tvb, voffset);  /* Number of Addresses */
+                                aditem = proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+                                         4, number_of_items, "Number of Addresses: %u", number_of_items);
+ 
+-                               adtree = proto_item_add_subtree(aditem, ett_nds);
+-                               voffset = voffset+4;
+-                               for (r=1; r <= number_of_items; r++)
+-                               {
++				adtree = proto_item_add_subtree(aditem, ett_nds);
++				voffset = voffset+4;
++				for (r=1; r <= number_of_items; r++)
++				{
++                                        /* Trap for end of packet */
++                                        if(tvb_length_remaining(tvb, voffset)<12)
++                                        {
++                                               THROW(ReportedBoundsError);
++                                        }
+                                         voffset += align_4(tvb, voffset);
+                                         value4 = tvb_get_letohl(tvb, voffset); /* type of Protocol */
+                                         valuestr = match_strval(value4, nds_protocol_type);
+                                         if (valuestr == NULL)
+                                         {
+-                                               valuestr="(Undefined Protocol)";
++						valuestr="(Undefined Protocol)";
+                                         }
+                                         proto_tree_add_uint_format(adtree, hf_nds_uint32value, tvb, voffset,
+-                                                4, value4, valuestr, value4);
++								   4, value4, valuestr, value4);
+                                         voffset = voffset+4;
+                                         value5 = tvb_get_letohl(tvb, voffset); /* length of address */
+                                         voffset = voffset+4;
+@@ -3232,24 +3280,24 @@
+                                         {
+                                                 case NDS_PTYPE_IPX:
+                                                         proto_tree_add_item(adtree, hf_nds_net, tvb, voffset, 4, FALSE);
+-		                                        proto_tree_add_item(adtree, hf_nds_node, tvb, voffset+4, 6, FALSE);
+-		                                        proto_tree_add_item(adtree, hf_nds_socket, tvb, voffset+10, 2, FALSE);
++                                                        proto_tree_add_item(adtree, hf_nds_node, tvb, voffset+4, 6, FALSE);
++                                                        proto_tree_add_item(adtree, hf_nds_socket, tvb, voffset+10, 2, FALSE);
+                                                         break;
+                                                 case NDS_PTYPE_IP:
+-	        	                                proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
+-	                                                proto_tree_add_item(adtree, hf_add_ref_ip, tvb, voffset+2, 4, FALSE);
++                                                        proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
++                                                        proto_tree_add_item(adtree, hf_add_ref_ip, tvb, voffset+2, 4, FALSE);
+                                                         break;
+                                                 case NDS_PTYPE_UDP:
+-	        	                                proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
+-	                                                proto_tree_add_item(adtree, hf_add_ref_udp, tvb, voffset+2, 4, FALSE);
++                                                        proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
++                                                        proto_tree_add_item(adtree, hf_add_ref_udp, tvb, voffset+2, 4, FALSE);
+                                                         break;
+                                                 case NDS_PTYPE_TCP:
+-		                                        proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
++                                                        proto_tree_add_item(adtree, hf_nds_port, tvb, voffset, 2, FALSE);
+                                                         proto_tree_add_item(adtree, hf_add_ref_tcp, tvb, voffset+2, 4, FALSE);
+                                                         break;
+                                                 case NDS_PTYPE_URL:
+                                                 case NDS_PTYPE_DNS:
+-                                                        get_string(tvb, voffset, value5, vvalues->vstring);
++                                                        vvalues->vstring = get_string(tvb, voffset, value5);
+                                                         proto_tree_add_string(adtree, hf_value_string, tvb, voffset,
+                                                                 value5, vvalues->vstring);
+                                                         break;
+@@ -3257,270 +3305,270 @@
+                                                         break;
+                                         }
+                                         voffset = voffset + value5;
+-                               }
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000011:        /* Object ACL */
+-                               value1 = tvb_get_letohl(tvb, voffset); /* Length of Field */
+-                               voffset = voffset + 4;
+-                               value2 = tvb_get_letohl(tvb, voffset);
+-                               voffset = voffset + 4;
+-                               get_string(tvb, voffset, value2, vvalues->vstring); /* Unicode String */
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                   value2, vvalues->vstring);
+-                               if (strcmp(vvalues->vstring, "[Entry Rights]")) {
+-                                   entry_rights=TRUE;
+-                               }
+-                               else
+-                               {
+-                                   entry_rights=FALSE;
+-                               }
+-                               voffset = voffset + value2;
+-                               voffset += align_4(tvb, voffset);
+-                               value3 = tvb_get_letohl(tvb, voffset);
+-                               voffset = voffset + 4;
+-                               get_string(tvb, voffset, value3, vvalues->vstring); /* Unicode Subject Name */
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                   value3, vvalues->vstring);
+-                               voffset = voffset + value3;
+-                               voffset += align_4(tvb, voffset);
+-                               temp_values.vvalue = tvb_get_letohl(tvb, voffset); /* Entry or Attribute Privileges */
+-                               temp_values.vlength = 2;
+-                               temp_values.hfname = hf_nds_vflags;
+-                               temp_values.voffset = voffset;
+-                               temp_values.vdesc = "Privileges";
+-                               if (entry_rights) {
+-                                   /* if Entries then use these bits */
+-                                   temp_values.bit1 = "Compare Attributes";
+-                                   temp_values.bit1hfname = hf_nds_compare_attributes;
+-                                   temp_values.bit2 = "Read Attribute";
+-                                   temp_values.bit2hfname = hf_nds_read_attribute;
+-                                   temp_values.bit3 = "Write, Add, Delete Attribute";
+-                                   temp_values.bit3hfname = hf_nds_write_add_delete_attribute;
+-                                   temp_values.bit4 = "Add/Delete Self";
+-                                   temp_values.bit4hfname = hf_nds_add_delete_self;
+-                                   temp_values.bit5 = "Attribute Privilege Not Defined";
+-                                   temp_values.bit5hfname = hf_nds_privilege_not_defined;
+-                                   temp_values.bit6 = "Supervisor";
+-                                   temp_values.bit6hfname = hf_nds_supervisor;
+-                                   temp_values.bit7 = "Inheritance Control";
+-                                   temp_values.bit7hfname = hf_nds_inheritance_control;
+-                                   temp_values.bit8 = "Not Defined";
+-                                   temp_values.bit8hfname = hf_bit8vflags;
+-                                   temp_values.bit9 = "Not Defined";
+-                                   temp_values.bit9hfname = hf_bit9vflags;
+-                                   temp_values.bit10 = "Not Defined";
+-                                   temp_values.bit10hfname = hf_bit10vflags;
+-                                   temp_values.bit11 = "Not Defined";
+-                                   temp_values.bit11hfname = hf_bit11vflags;
+-                                   temp_values.bit12 = "Not Defined";
+-                                   temp_values.bit12hfname = hf_bit12vflags;
+-                                   temp_values.bit13 = "Not Defined";
+-                                   temp_values.bit13hfname = hf_bit13vflags;
+-                                   temp_values.bit14 = "Not Defined";
+-                                   temp_values.bit14hfname = hf_bit14vflags;
+-                                   temp_values.bit15 = "Not Defined";
+-                                   temp_values.bit15hfname = hf_bit15vflags;
+-                                   temp_values.bit16 = "Not Defined";
+-                                   temp_values.bit16hfname = hf_bit16vflags;
+-                               }
+-                               else
+-                               {
+-                                   /* if attribute rights then do these bits */
+-                                   temp_values.bit1 = "Browse";
+-                                   temp_values.bit1hfname = hf_nds_browse_entry;
+-                                   temp_values.bit2 = "Add";
+-                                   temp_values.bit2hfname = hf_nds_add_entry;
+-                                   temp_values.bit3 = "Delete";
+-                                   temp_values.bit3hfname = hf_nds_delete_entry;
+-                                   temp_values.bit4 = "Rename";
+-                                   temp_values.bit4hfname = hf_nds_rename_entry;
+-                                   temp_values.bit5 = "Supervisor";
+-                                   temp_values.bit5hfname = hf_nds_supervisor_entry;
+-                                   temp_values.bit6 = "Entry Privilege Not Defined";
+-                                   temp_values.bit6hfname = hf_nds_entry_privilege_not_defined;
+-                                   temp_values.bit7 = "Inheritance Control";
+-                                   temp_values.bit7hfname = hf_nds_inheritance_control;
+-                                   temp_values.bit8 = "Not Defined";
+-                                   temp_values.bit8hfname = hf_bit8vflags;
+-                                   temp_values.bit9 = "Not Defined";
+-                                   temp_values.bit9hfname = hf_bit9vflags;
+-                                   temp_values.bit10 = "Not Defined";
+-                                   temp_values.bit10hfname = hf_bit10vflags;
+-                                   temp_values.bit11 = "Not Defined";
+-                                   temp_values.bit11hfname = hf_bit11vflags;
+-                                   temp_values.bit12 = "Not Defined";
+-                                   temp_values.bit12hfname = hf_bit12vflags;
+-                                   temp_values.bit13 = "Not Defined";
+-                                   temp_values.bit13hfname = hf_bit13vflags;
+-                                   temp_values.bit14 = "Not Defined";
+-                                   temp_values.bit14hfname = hf_bit14vflags;
+-                                   temp_values.bit15 = "Not Defined";
+-                                   temp_values.bit15hfname = hf_bit15vflags;
+-                                   temp_values.bit16 = "Not Defined";
+-                                   temp_values.bit16hfname = hf_bit16vflags;
+-                               }
+-                               process_bitfield(nvtree, tvb, &temp_values);
+-                               voffset = voffset+4;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000013:        /* Time Stamp */
+-                               value1 = tvb_get_letohl(tvb, voffset);         /* Seconds */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value1, "Length of Record: %d", value1);
+-                               voffset = voffset+4;
+-                               ns.secs = tvb_get_letohl(tvb, voffset);
+-                               ns.nsecs = 0;
+-                               proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+-                               voffset = voffset + 4;
+-                               rnum = tvb_get_letohs(tvb, voffset); /* replica number */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_rnum, tvb, voffset,
+-                                        2, rnum, "Replica Number: %d", rnum);
+-                               voffset = voffset+2;
+-                               revent = tvb_get_letohs(tvb, voffset); /* Event */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_revent, tvb, voffset,
+-                                        2, revent, "Event: %d", revent);
+-                               voffset = voffset+2;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000017:        /* Back Link */
+-                               value1 = tvb_get_letohl(tvb, voffset);         /* Length */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value1, "Length of Record %08x", value1);
+-                               voffset = voffset+4;
+-                               value2 = tvb_get_letohl(tvb, voffset);         /* Remote ID */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value2, "Remote ID %08x", value2);
+-                               voffset = voffset+4;
+-                               value3 = tvb_get_letohl(tvb, voffset);         /* Length of string */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value3, vvalues->vstring);
+-                               proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
+-                                        value3, vvalues->vstring,
+-                                        "Server Distinguished Name - %s", vvalues->vstring);
+-                               voffset = voffset+value3;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000018:        /* Time */
+-                               voffset += 4; /* This is the length of the time data no need to decode, always 4 bytes */
+-                               ns.secs = tvb_get_letohl(tvb, voffset);
+-                               ns.nsecs = 0;
+-                               proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Time: %s", abs_time_to_str(&ns));
+-                               voffset = voffset + 4;
+-                               break;
+-                       case 0x00000019:        /* Typed Name */
+-                               value1 = tvb_get_letohl(tvb, voffset);         /* Length */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value1, "Length of Record %08x", value1);
+-                               voffset = voffset+4;
+-                               value2 = tvb_get_letohl(tvb, voffset);         /* Level */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value2, "Level %d", value2);
+-                               voffset = voffset+4;
+-                               value3 = tvb_get_letohl(tvb, voffset);         /* Interval */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value3, "Interval %d", value3);
+-                               voffset = voffset+4;
+-                               value4 = tvb_get_letohl(tvb, voffset);         /* Distinguished Name */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value4, vvalues->vstring);
+-                               proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
+-                                        value4, vvalues->vstring,
+-                                        "Distinguished Name - %s", vvalues->vstring);
+-                               voffset = voffset+value4;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x0000001a:        /* Hold */
+-                               value1 = tvb_get_letohl(tvb, voffset);         /* Length */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value1, "Length of Record %08x", value1);
+-                               voffset = voffset+4;
+-                               value2 = tvb_get_letohl(tvb, voffset);         /* Amount */
+-                               proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
+-                                        4, value2, "Amount %d", value2);
+-                               voffset = voffset+4;
+-                               value3 = tvb_get_letohl(tvb, voffset);         /* Subject */
+-                               voffset = voffset+4;
+-                               get_string(tvb, voffset, value3, vvalues->vstring);
+-                               proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
+-                                        value3, vvalues->vstring,
+-                                        "Subject - %s", vvalues->vstring);
+-                               voffset = voffset+value3;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
+-                       case 0x00000001:        /* Distinguished Name */
+-                       case 0x00000002:        /* Case Sensitive Unicode String */
+-                       case 0x00000003:        /* Non Case Sensitive Unicode String */
+-                       case 0x00000004:        /* Printable String */
+-                       case 0x00000005:        /* Numeric String */
+-                       case 0x0000000a:        /* Telephone Number */
+-                       case 0x0000000e:        /* Email Address */
+-                       case 0x00000014:        /* Class Name */
+-                       default:
+-                               value1 = tvb_get_letohl(tvb, voffset);
+-                               voffset = voffset + 4;
+-                               if (strcmp(vvalues->vstring, "zendmSearchOrder")==0) {
+-                                   get_string(tvb, voffset, value1, vvalues->vstring);
+-                                   if (strcmp(vvalues->vstring, "0")==0) {
+-                                       vvalues->vstring = "Value (0) = Object";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "1")==0) {
+-                                       vvalues->vstring = "Value (1) = Group";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "2")==0) {
+-                                       vvalues->vstring = "Value (2) = Container";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "01")==0) {
+-                                       vvalues->vstring = "Value (01) = Object, Group";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "02")==0) {
+-                                       vvalues->vstring = "Value (02) = Object, Container";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "10")==0) {
+-                                       vvalues->vstring = "Value (10) = Group, Object";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "12")==0) {
+-                                       vvalues->vstring = "Value (12) = Group, Container";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "20")==0) {
+-                                       vvalues->vstring = "Value (20) = Container, Object";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "21")==0) {
+-                                       vvalues->vstring = "Value (21) = Container, Group";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "012")==0) {
+-                                       vvalues->vstring = "Value (012) = Object, Group, Container";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "021")==0) {
+-                                       vvalues->vstring = "Value (021) = Object, Container, Group";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "102")==0) {
+-                                       vvalues->vstring = "Value (102) = Group, Object, Container";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "120")==0) {
+-                                       vvalues->vstring = "Value (120) = Group, Container, Object";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "201")==0) {
+-                                       vvalues->vstring = "Value (201) = Container, Object, Group";
+-                                   }
+-                                   if (strcmp(vvalues->vstring, "210")==0) {
+-                                       vvalues->vstring = "Value (210) = Container, Group, Object";
+-                                   }
+-                               }
+-                               else
+-                               {
+-                                   get_string(tvb, voffset, value1, vvalues->vstring);
+-                               }
+-                               proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
+-                                   value1, vvalues->vstring);
+-                               voffset = voffset + value1;
+-                               voffset += align_4(tvb, voffset);
+-                               break;
++				}
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x00000011:        /* Object ACL */
++                                value1 = tvb_get_letohl(tvb, voffset); /* Length of Field */
++				voffset = voffset + 4;
++				value2 = tvb_get_letohl(tvb, voffset);
++				voffset = voffset + 4;
++				vvalues->vstring = get_string(tvb, voffset, value2); /* Unicode String */
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value2, vvalues->vstring);
++				if (strcmp(vvalues->vstring, "[Entry Rights]")) {
++					entry_rights=TRUE;
++				}
++				else
++				{
++					entry_rights=FALSE;
++				}
++				voffset = voffset + value2;
++				voffset += align_4(tvb, voffset);
++				value3 = tvb_get_letohl(tvb, voffset);
++				voffset = voffset + 4;
++				vvalues->vstring = get_string(tvb, voffset, value3); /* Unicode Subject Name */
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value3, vvalues->vstring);
++				voffset = voffset + value3;
++				voffset += align_4(tvb, voffset);
++				temp_values.vvalue = tvb_get_letohl(tvb, voffset); /* Entry or Attribute Privileges */
++				temp_values.vlength = 2;
++				temp_values.hfname = hf_nds_vflags;
++				temp_values.voffset = voffset;
++				temp_values.vdesc = "Privileges";
++				if (entry_rights) {
++					/* if Entries then use these bits */
++					temp_values.bit1 = "Compare Attributes";
++					temp_values.bit1hfname = hf_nds_compare_attributes;
++					temp_values.bit2 = "Read Attribute";
++					temp_values.bit2hfname = hf_nds_read_attribute;
++					temp_values.bit3 = "Write, Add, Delete Attribute";
++					temp_values.bit3hfname = hf_nds_write_add_delete_attribute;
++					temp_values.bit4 = "Add/Delete Self";
++					temp_values.bit4hfname = hf_nds_add_delete_self;
++					temp_values.bit5 = "Attribute Privilege Not Defined";
++					temp_values.bit5hfname = hf_nds_privilege_not_defined;
++					temp_values.bit6 = "Supervisor";
++					temp_values.bit6hfname = hf_nds_supervisor;
++					temp_values.bit7 = "Inheritance Control";
++					temp_values.bit7hfname = hf_nds_inheritance_control;
++					temp_values.bit8 = "Not Defined";
++					temp_values.bit8hfname = hf_bit8vflags;
++					temp_values.bit9 = "Not Defined";
++					temp_values.bit9hfname = hf_bit9vflags;
++					temp_values.bit10 = "Not Defined";
++					temp_values.bit10hfname = hf_bit10vflags;
++					temp_values.bit11 = "Not Defined";
++					temp_values.bit11hfname = hf_bit11vflags;
++					temp_values.bit12 = "Not Defined";
++					temp_values.bit12hfname = hf_bit12vflags;
++					temp_values.bit13 = "Not Defined";
++					temp_values.bit13hfname = hf_bit13vflags;
++					temp_values.bit14 = "Not Defined";
++					temp_values.bit14hfname = hf_bit14vflags;
++					temp_values.bit15 = "Not Defined";
++					temp_values.bit15hfname = hf_bit15vflags;
++					temp_values.bit16 = "Not Defined";
++					temp_values.bit16hfname = hf_bit16vflags;
++				}
++				else
++				{
++					/* if attribute rights then do these bits */
++					temp_values.bit1 = "Browse";
++					temp_values.bit1hfname = hf_nds_browse_entry;
++					temp_values.bit2 = "Add";
++					temp_values.bit2hfname = hf_nds_add_entry;
++					temp_values.bit3 = "Delete";
++					temp_values.bit3hfname = hf_nds_delete_entry;
++					temp_values.bit4 = "Rename";
++					temp_values.bit4hfname = hf_nds_rename_entry;
++					temp_values.bit5 = "Supervisor";
++					temp_values.bit5hfname = hf_nds_supervisor_entry;
++					temp_values.bit6 = "Entry Privilege Not Defined";
++					temp_values.bit6hfname = hf_nds_entry_privilege_not_defined;
++					temp_values.bit7 = "Inheritance Control";
++					temp_values.bit7hfname = hf_nds_inheritance_control;
++					temp_values.bit8 = "Not Defined";
++					temp_values.bit8hfname = hf_bit8vflags;
++					temp_values.bit9 = "Not Defined";
++					temp_values.bit9hfname = hf_bit9vflags;
++					temp_values.bit10 = "Not Defined";
++					temp_values.bit10hfname = hf_bit10vflags;
++					temp_values.bit11 = "Not Defined";
++					temp_values.bit11hfname = hf_bit11vflags;
++					temp_values.bit12 = "Not Defined";
++					temp_values.bit12hfname = hf_bit12vflags;
++					temp_values.bit13 = "Not Defined";
++					temp_values.bit13hfname = hf_bit13vflags;
++					temp_values.bit14 = "Not Defined";
++					temp_values.bit14hfname = hf_bit14vflags;
++					temp_values.bit15 = "Not Defined";
++					temp_values.bit15hfname = hf_bit15vflags;
++					temp_values.bit16 = "Not Defined";
++					temp_values.bit16hfname = hf_bit16vflags;
++				}
++				process_bitfield(nvtree, tvb, &temp_values);
++				voffset = voffset+4;
++				voffset += align_4(tvb, voffset);
++				break;
++		        case 0x00000013:        /* Time Stamp */
++			        value1 = tvb_get_letohl(tvb, voffset);         /* Seconds */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value1, "Length of Record: %u", value1);
++				voffset = voffset+4;
++				ns.secs = tvb_get_letohl(tvb, voffset);
++				ns.nsecs = 0;
++				proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
++				voffset = voffset + 4;
++				rnum = tvb_get_letohs(tvb, voffset); /* replica number */
++				proto_tree_add_uint_format(nvtree, hf_nds_rnum, tvb, voffset,
++							   2, rnum, "Replica Number: %d", rnum);
++				voffset = voffset+2;
++				revent = tvb_get_letohs(tvb, voffset); /* Event */
++				proto_tree_add_uint_format(nvtree, hf_nds_revent, tvb, voffset,
++							   2, revent, "Event: %d", revent);
++				voffset = voffset+2;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x00000017:        /* Back Link */
++                                value1 = tvb_get_letohl(tvb, voffset);         /* Length */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value1, "Length of Record %08x", value1);
++				voffset = voffset+4;
++				value2 = tvb_get_letohl(tvb, voffset);         /* Remote ID */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value2, "Remote ID %08x", value2);
++				voffset = voffset+4;
++				value3 = tvb_get_letohl(tvb, voffset);         /* Length of string */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value3);
++				proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
++							     value3, vvalues->vstring,
++							     "Server Distinguished Name - %s", vvalues->vstring);
++				voffset = voffset+value3;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x00000018:        /* Time */
++                                voffset += 4; /* This is the length of the time data no need to decode, always 4 bytes */
++				ns.secs = tvb_get_letohl(tvb, voffset);
++				ns.nsecs = 0;
++				proto_tree_add_time_format(nvtree, hf_nds_ds_time, tvb, voffset, 4, &ns, "Time: %s", abs_time_to_str(&ns));
++				voffset = voffset + 4;
++				break;
++                        case 0x00000019:        /* Typed Name */
++			        value1 = tvb_get_letohl(tvb, voffset);         /* Length */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value1, "Length of Record %08x", value1);
++				voffset = voffset+4;
++				value2 = tvb_get_letohl(tvb, voffset);         /* Level */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value2, "Level %d", value2);
++				voffset = voffset+4;
++				value3 = tvb_get_letohl(tvb, voffset);         /* Interval */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value3, "Interval %d", value3);
++				voffset = voffset+4;
++				value4 = tvb_get_letohl(tvb, voffset);         /* Distinguished Name */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value4);
++				proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
++							     value4, vvalues->vstring,
++							     "Distinguished Name - %s", vvalues->vstring);
++				voffset = voffset+value4;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x0000001a:        /* Hold */
++                                value1 = tvb_get_letohl(tvb, voffset);         /* Length */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value1, "Length of Record %08x", value1);
++				voffset = voffset+4;
++				value2 = tvb_get_letohl(tvb, voffset);         /* Amount */
++				proto_tree_add_uint_format(nvtree, hf_nds_uint32value, tvb, voffset,
++							   4, value2, "Amount %d", value2);
++				voffset = voffset+4;
++				value3 = tvb_get_letohl(tvb, voffset);         /* Subject */
++				voffset = voffset+4;
++				vvalues->vstring = get_string(tvb, voffset, value3);
++				proto_tree_add_string_format(nvtree, hf_value_string, tvb, voffset,
++							     value3, vvalues->vstring,
++							     "Subject - %s", vvalues->vstring);
++				voffset = voffset+value3;
++				voffset += align_4(tvb, voffset);
++				break;
++                        case 0x00000001:        /* Distinguished Name */
++                        case 0x00000002:        /* Case Sensitive Unicode String */
++                        case 0x00000003:        /* Non Case Sensitive Unicode String */
++                        case 0x00000004:        /* Printable String */
++                        case 0x00000005:        /* Numeric String */
++                        case 0x0000000a:        /* Telephone Number */
++                        case 0x0000000e:        /* Email Address */
++                        case 0x00000014:        /* Class Name */
++                        default:
++                                value1 = tvb_get_letohl(tvb, voffset);
++				voffset = voffset + 4;
++				if (strcmp(vvalues->vstring, "zendmSearchOrder")==0) {
++					vvalues->vstring = get_string(tvb, voffset, value1);
++					if (strcmp(vvalues->vstring, "0")==0) {
++						vvalues->vstring = "Value (0) = Object";
++					}
++					else if (strcmp(vvalues->vstring, "1")==0) {
++						vvalues->vstring = "Value (1) = Group";
++					}
++					else if (strcmp(vvalues->vstring, "2")==0) {
++						vvalues->vstring = "Value (2) = Container";
++					}
++					else if (strcmp(vvalues->vstring, "01")==0) {
++						vvalues->vstring = "Value (01) = Object, Group";
++					}
++					else if (strcmp(vvalues->vstring, "02")==0) {
++						vvalues->vstring = "Value (02) = Object, Container";
++					}
++					else if (strcmp(vvalues->vstring, "10")==0) {
++						vvalues->vstring = "Value (10) = Group, Object";
++					}
++					else if (strcmp(vvalues->vstring, "12")==0) {
++						vvalues->vstring = "Value (12) = Group, Container";
++					}
++					else if (strcmp(vvalues->vstring, "20")==0) {
++						vvalues->vstring = "Value (20) = Container, Object";
++					}
++					else if (strcmp(vvalues->vstring, "21")==0) {
++						vvalues->vstring = "Value (21) = Container, Group";
++					}
++					else if (strcmp(vvalues->vstring, "012")==0) {
++						vvalues->vstring = "Value (012) = Object, Group, Container";
++					}
++					else if (strcmp(vvalues->vstring, "021")==0) {
++						vvalues->vstring = "Value (021) = Object, Container, Group";
++					}
++					else if (strcmp(vvalues->vstring, "102")==0) {
++					       vvalues->vstring = "Value (102) = Group, Object, Container";
++					}
++					else if (strcmp(vvalues->vstring, "120")==0) {
++						vvalues->vstring = "Value (120) = Group, Container, Object";
++					}
++					else if (strcmp(vvalues->vstring, "201")==0) {
++						vvalues->vstring = "Value (201) = Container, Object, Group";
++					}
++					else if (strcmp(vvalues->vstring, "210")==0) {
++						vvalues->vstring = "Value (210) = Container, Group, Object";
++					}
++				}
++				else
++				{
++					vvalues->vstring = get_string(tvb, voffset, value1);
++				}
++				proto_tree_add_string(nvtree, hf_value_string, tvb, voffset,
++						      value1, vvalues->vstring);
++				voffset = voffset + value1;
++				voffset += align_4(tvb, voffset);
++				break;
+                 }
+                 voffset += align_4(tvb, voffset);
+         }
+         vvalues->voffset=voffset;
+-return;
++        return;
+ }
+ 
+ static guint32
+@@ -3536,18 +3584,15 @@
+         guint32         i;
+         guint16         replica_num;
+         guint16         event_num;
+-        nw_uni_t        mval_buf;
+         proto_tree      *nestree;
+-	    proto_item      *nesitem;
++	proto_item      *nesitem;
+         proto_tree      *sub1tree;
+-	    proto_item      *sub1item;
++	proto_item      *sub1item;
+         proto_tree      *sub2tree;
+-	    proto_item      *sub2item;
++	proto_item      *sub2item;
+         const char      *vstring="";
+         nstime_t        ns;
+ 
+-       	mval_buf.buffer[0] = '\0';
+-
+         switch (vtype)
+         {
+                 case 0: /* No Specifier Type */
+@@ -3557,18 +3602,16 @@
+                         ioffset = ioffset + 4;
+                         break;
+                 case 1: /* Unicode String */
+-                        value1 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                        value1 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                         ioffset = ioffset + 4;
+-                        get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                        values->vstring = mval_buf.buffer;
++                        values->vstring = get_string(tvb, ioffset, value1);
+                         proto_tree_add_string_format(estree, hf_mv_string, tvb, ioffset,
+-                                value1, values->vstring, "Delimeter ->%s", values->vstring);
++                                value1, values->vstring, "Delimiter ->%s", values->vstring);
+                         ioffset=ioffset + value1;
+                         ioffset += align_4(tvb, ioffset);
+                         value2 = tvb_get_letohl(tvb, ioffset);
+                         ioffset = ioffset + 4;
+-                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                        values->vstring = mval_buf.buffer;
++                        values->vstring = get_string(tvb, ioffset, value2);
+                         proto_tree_add_string(estree, hf_mv_string, tvb, ioffset,
+                                 value2, values->vstring);
+                         values->voffset=ioffset + value2;
+@@ -3595,18 +3638,16 @@
+                                         ioffset = ioffset + 4;
+                                         break;
+                                 case 1: /* Unicode String */
+-                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value2);
+                                         proto_tree_add_string_format(nestree, hf_mv_string, tvb, ioffset,
+-                                                value2, values->vstring, "Delimeter ->%s", values->vstring);
++                                                value2, values->vstring, "Delimiter ->%s", values->vstring);
+                                         ioffset=ioffset + value2;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value3 = tvb_get_letohl(tvb, ioffset);
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value3, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value3);
+                                         proto_tree_add_string(nestree, hf_mv_string, tvb, ioffset,
+                                                 value3, values->vstring);
+                                         values->voffset=ioffset + value3;
+@@ -3638,18 +3679,16 @@
+                                                         2, event_num);
+                                                 ioffset = ioffset + 2;
+                                         }
+-                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value4, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value4);
+                                         proto_tree_add_string(nestree, hf_mv_string, tvb, ioffset,
+                                                 value4, values->vstring);
+                                         ioffset=ioffset + value4;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value5 = tvb_get_letohl(tvb, ioffset);   /* RDN */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value5, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value5);
+                                         proto_tree_add_string(nestree, hf_rdn_string, tvb, ioffset,
+                                                 value5, values->vstring);
+                                         ioffset=ioffset + value5;
+@@ -3664,7 +3703,7 @@
+                                                 4, value1);
+                                         ioffset = ioffset + 4;
+                                         break;
+-                         }
++			}
+                         value1 = tvb_get_letohl(tvb, ioffset);   /* ES Type */
+                         vstring = match_strval(value1, es_type);
+                         if (vstring == NULL)
+@@ -3684,18 +3723,16 @@
+                                         ioffset = ioffset + 4;
+                                         break;
+                                 case 1: /* Unicode String */
+-                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value2);
+                                         proto_tree_add_string_format(estree, hf_mv_string, tvb, ioffset,
+-                                                value2, values->vstring, "Delimeter ->%s", values->vstring);
++                                                value2, values->vstring, "Delimiter ->%s", values->vstring);
+                                         ioffset=ioffset + value2;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value3 = tvb_get_letohl(tvb, ioffset);
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value3, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value3);
+                                         proto_tree_add_string(estree, hf_mv_string, tvb, ioffset,
+                                                 value3, values->vstring);
+                                         values->voffset=ioffset + value3;
+@@ -3727,18 +3764,16 @@
+                                                         2, event_num);
+                                                 ioffset = ioffset + 2;
+                                         }
+-                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value4, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value4);
+                                         proto_tree_add_string(estree, hf_mv_string, tvb, ioffset,
+                                                 value4, values->vstring);
+                                         ioffset=ioffset + value4;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value5 = tvb_get_letohl(tvb, ioffset);   /* RDN */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value5, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value5);
+                                         proto_tree_add_string(estree, hf_rdn_string, tvb, ioffset,
+                                                 value5, values->vstring);
+                                         ioffset=ioffset + value5;
+@@ -3753,7 +3788,7 @@
+                                                 4, value1);
+                                         ioffset = ioffset + 4;
+                                         break;
+-                         }
++			}
+                         break;
+                 case 3: /* Hinted */
+                         number_of_referrals = tvb_get_letohl(tvb, ioffset);
+@@ -3761,13 +3796,13 @@
+                         for (r = 1 ; r <= number_of_referrals; r++ )
+                         {
+ 		                sub1item = proto_tree_add_uint_format(estree, hf_referral_record, tvb, 6, 0,
+-		                r, "NDS Referral Record #%u", r);
++								      r, "NDS Referral Record #%u", r);
+                                 sub1tree = proto_item_add_subtree(sub1item, ett_nds);
+ 
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+ 
+ 	                        proto_tree_add_uint_format(sub1tree, hf_referral_addcount, tvb, ioffset, 4,
+-        	                        value1, "Number of Addresses in Referral - %d", value1);
++        	                        value1, "Number of Addresses in Referral - %u", value1);
+ 
+                                 ioffset = ioffset + 4;
+                                 for (i = 1 ; i <= value1; i++ )
+@@ -3804,7 +3839,7 @@
+                                                         break;
+                                                 case NDS_PTYPE_URL:
+                                                 case NDS_PTYPE_DNS:
+-                                                        get_string(tvb, ioffset, value3, values->vstring);
++                                                        values->vstring = get_string(tvb, ioffset, value3);
+                                                         proto_tree_add_string(sub1tree, hf_value_string, tvb, ioffset,
+                                                                 value3, values->vstring);
+                                                         break;
+@@ -3823,7 +3858,7 @@
+                                 vstring = "No ES Type Found";
+                         }
+                         nesitem = proto_tree_add_string_format(estree, hf_es_type, tvb, ioffset,
+-                                4, vstring, "Object Name Type - %s", vstring);
++							       4, vstring, "Object Name Type - %s", vstring);
+                         nestree = proto_item_add_subtree(nesitem, ett_nds);
+                         ioffset = ioffset + 4;
+                         switch (value1)
+@@ -3835,18 +3870,16 @@
+                                         ioffset = ioffset + 4;
+                                         break;
+                                 case 1: /* Unicode String */
+-                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value2 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value2);
+                                         proto_tree_add_string_format(estree, hf_mv_string, tvb, ioffset,
+-                                                value2, values->vstring, "Delimeter ->%s", values->vstring);
++                                                value2, values->vstring, "Delimiter ->%s", values->vstring);
+                                         ioffset=ioffset + value2;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value3 = tvb_get_letohl(tvb, ioffset);
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value3, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value3);
+                                         proto_tree_add_string(estree, hf_mv_string, tvb, ioffset,
+                                                 value3, values->vstring);
+                                         values->voffset=ioffset + value3;
+@@ -3878,18 +3911,16 @@
+                                                         2, event_num);
+                                                 ioffset = ioffset + 2;
+                                         }
+-                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                                        value4 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value4, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value4);
+                                         proto_tree_add_string(estree, hf_mv_string, tvb, ioffset,
+                                                 value4, values->vstring);
+                                         ioffset=ioffset + value4;
+                                         ioffset += align_4(tvb, ioffset);
+                                         value5 = tvb_get_letohl(tvb, ioffset);   /* RDN */
+                                         ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value5, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
++                                        values->vstring = get_string(tvb, ioffset, value5);
+                                         proto_tree_add_string(estree, hf_rdn_string, tvb, ioffset,
+                                                 value5, values->vstring);
+                                         ioffset=ioffset + value5;
+@@ -3904,17 +3935,17 @@
+                                                 4, value1);
+                                         ioffset = ioffset + 4;
+                                         break;
+-                         }
++			}
+                         break;
+                 case 4: /* Tuned */
+                         value1 = tvb_get_letohl(tvb, ioffset);
+                         sub1item = proto_tree_add_uint_format(estree, hf_es_rdn_count, tvb, ioffset,
+-                                4, value1, "Number of RDN Items %d", value1);
++                                4, value1, "Number of RDN Items %u", value1);
+                         sub1tree = proto_item_add_subtree(sub1item, ett_nds);
+                         ioffset = ioffset + 4;
+                         for (r = 1 ; r <= value1; r++ )
+                         {
+-                                sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Item %d", r);
++                                sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Item %u", r);
+                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+ 
+                                 ns.secs = tvb_get_letohl(tvb, ioffset);   /* Seconds */
+@@ -3931,18 +3962,16 @@
+                                         2, event_num);
+                                 ioffset = ioffset + 2;
+                         }
+-                        value3 = tvb_get_letohl(tvb, ioffset);   /* Delimeter Set */
++                        value3 = tvb_get_letohl(tvb, ioffset);   /* Delimiter Set */
+                         ioffset = ioffset + 4;
+-                        get_string(tvb, ioffset, value3, mval_buf.buffer);
+-                        values->vstring = mval_buf.buffer;
++                        values->vstring = get_string(tvb, ioffset, value3);
+                         proto_tree_add_string(sub1tree, hf_mv_string, tvb, ioffset,
+                                 value3, values->vstring);
+                         ioffset=ioffset + value3;
+                         ioffset += align_4(tvb, ioffset);
+                         value4 = tvb_get_letohl(tvb, ioffset);   /* RDN */
+                         ioffset = ioffset + 4;
+-                        get_string(tvb, ioffset, value4, mval_buf.buffer);
+-                        values->vstring = mval_buf.buffer;
++                        values->vstring = get_string(tvb, ioffset, value4);
+                         proto_tree_add_string(sub1tree, hf_rdn_string, tvb, ioffset,
+                                 value4, values->vstring);
+                         ioffset=ioffset + value4;
+@@ -3957,7 +3986,7 @@
+                                 4, value1);
+                         ioffset = ioffset + 4;
+                         break;
+-         }
++	}
+         return ioffset;
+ }
+ 
+@@ -3975,11 +4004,11 @@
+     search_string = (char *)match_strval(search_tag, itersearchenum);
+     if(search_string == NULL)
+     {
+-        search_string = "(No Search Operation Type Found!)";
++	search_string = "(No Search Operation Type Found!)";
+     }
+     proto_tree_add_uint_format(it_tree, hf_iter_search, tvb, ioffset, 4,
+-        search_tag, "Search Operation Type: %d, (0x%04x), %s",
+-        search_tag, search_tag, search_string);
++			       search_tag, "Search Operation Type: %d, (0x%04x), %s",
++			       search_tag, search_tag, search_string);
+     ioffset += 4;
+     switch (search_tag)
+     {
+@@ -3989,82 +4018,82 @@
+     case NDS_SEARCH_APPROX:
+     case NDS_SEARCH_ATTR_FLAGS:
+     case NDS_SEARCH_ATTR_HAS_FLAG:
+-        /* start of DCWPutAttribute */
+-        values->vvalue = tvb_get_letohl(tvb, ioffset);
+-        ioffset = ioffset + 4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
+-        proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                values->vvalue, values->vstring);
+-        ioffset += values->vvalue;
+-        /* end of DCWPutAttribute */
++	/* start of DCWPutAttribute */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutAttribute */
+ 
+-        ioffset += align_4(tvb, ioffset);
++	ioffset += align_4(tvb, ioffset);
+ 
+-        /* start of DCWPutValue */
+-        values->vvalue = tvb_get_letohl(tvb, ioffset);
+-        values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+-        if (values->vstring == NULL)
+-        {
+-                values->vstring = "No Syntax Found";
+-        }
+-        proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+-        4, values->vstring);
+-        ioffset = ioffset + 4;
+-        values->vvalue = tvb_get_letohl(tvb, ioffset);
+-        ioffset = ioffset + 4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
+-        proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                values->vvalue, values->vstring);
+-        ioffset += values->vvalue;
+-        /* end of DCWPutValue */
++	/* start of DCWPutValue */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
++	if (values->vstring == NULL)
++	{
++	    values->vstring = "No Syntax Found";
++	}
++	proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
++				  4, values->vstring);
++	ioffset = ioffset + 4;
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutValue */
+ 
+-        break;
++	break;
+     case NDS_SEARCH_PRESENT:
+-            /* start of DCWPutAttribute */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset = ioffset + values->vvalue;
+-            /* end of DCWPutAttribute */
+-            break;
++	/* start of DCWPutAttribute */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset = ioffset + values->vvalue;
++	/* end of DCWPutAttribute */
++	break;
+ 
+     case NDS_SEARCH_RDN:
+-            /* print the relative distinguished name. This includes context info... */
+-            /*if (err = DCWPutRDN(context, cur, limit, item->data))
+-                return err;*/
++	/* print the relative distinguished name. This includes context info... */
++	/*if (err = DCWPutRDN(context, cur, limit, item->data))
++	  return err;*/
+ 
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            break;
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	break;
+     case NDS_SEARCH_BASE_CLASS:
+     case NDS_SEARCH_ENTRY_FLAGS:
+     case NDS_SEARCH_ENTRY_HAS_FLAG:
+     case NDS_SEARCH_VALUE_FLAGS:
+     case NDS_SEARCH_VALUE_HAS_FLAG:
+-        /* start of DCWPutValue */
+-        /*values->vvalue = tvb_get_letohl(tvb, ioffset);
+-        values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+-        if (values->vstring == NULL)
+-        {
+-                values->vstring = "No Syntax Found";
+-        }
+-        proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+-        4, values->vstring);
+-        ioffset = ioffset + 4;*/
+-        values->vvalue = tvb_get_letohl(tvb, ioffset);
+-        ioffset = ioffset + 4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
+-        proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                values->vvalue, values->vstring);
+-        ioffset += values->vvalue;
+-        /* end of DCWPutValue */
+-        break;
++	/* start of DCWPutValue */
++	/*values->vvalue = tvb_get_letohl(tvb, ioffset);
++	  values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
++	  if (values->vstring == NULL)
++	  {
++	  values->vstring = "No Syntax Found";
++	  }
++	  proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
++	  4, values->vstring);
++	  ioffset = ioffset + 4;*/
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutValue */
++	break;
+     case DCS_VALUE_GE_WITH_ATTR:        /* Deprecated, use DS_SEARCH_VALUE_MTS_GE */
+     case NDS_SEARCH_VALUE_MTS_GE:
+     case NDS_SEARCH_VALUE_MTS_G:
+@@ -4078,35 +4107,35 @@
+     case NDS_SEARCH_VALUE_CTS_L:
+     case NDS_SEARCH_VALUE_CTS_EQ:
+     case NDS_SEARCH_VALUE_CTS_EQ_APPROX:
+-            /* start of DCWPutAttribute */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            /* end of DCWPutAttribute */
++	/* start of DCWPutAttribute */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutAttribute */
+ 
+-            ioffset += align_4(tvb, ioffset);
++	ioffset += align_4(tvb, ioffset);
+ 
+-            /* start of DCWPutValue */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+-            if (values->vstring == NULL)
+-            {
+-                    values->vstring = "No Syntax Found";
++	/* start of DCWPutValue */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
++	if (values->vstring == NULL)
++	    {
++		values->vstring = "No Syntax Found";
+             }
+-            proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+-            4, values->vstring);
+-            ioffset = ioffset + 4;
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            /* end of DCWPutValue */
+-            break;
++	proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
++			      4, values->vstring);
++	ioffset = ioffset + 4;
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutValue */
++	break;
+     case DCS_MOD_GE_WITH_ATTR:        /* Deprecated, use DS_SEARCH_ENTRY_MTS */
+     case NDS_SEARCH_ENTRY_MTS_GE:
+     case NDS_SEARCH_ENTRY_MTS_G:
+@@ -4120,67 +4149,67 @@
+     case NDS_SEARCH_ENTRY_CTS_L:
+     case NDS_SEARCH_ENTRY_CTS_EQ:
+     case NDS_SEARCH_ENTRY_CTS_EQ_APPROX:
+-            /* start of DCWPutAttribute */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            /* end of DCWPutAttribute */
++	/* start of DCWPutAttribute */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutAttribute */
+ 
+-            ioffset += align_4(tvb, ioffset);
++	ioffset += align_4(tvb, ioffset);
+ 
+-            /* start of DCWPutValue */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+-            if (values->vstring == NULL)
+-            {
+-                    values->vstring = "No Syntax Found";
+-            }
+-            proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+-            4, values->vstring);
+-            ioffset = ioffset + 4;
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            /* end of DCWPutValue */
++	/* start of DCWPutValue */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
++	if (values->vstring == NULL)
++	{
++	    values->vstring = "No Syntax Found";
++	}
++	proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
++			      4, values->vstring);
++	ioffset = ioffset + 4;
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutValue */
+ 
+-            break;
++	break;
+     case NDS_SEARCH_EID:
+     case NDS_SEARCH_ENTRY_SUBCOUNT_GE:
+     case NDS_SEARCH_ENTRY_SUBCOUNT_G:
+     case NDS_SEARCH_ENTRY_SUBCOUNT_LE:
+     case NDS_SEARCH_ENTRY_SUBCOUNT_L:
+     case NDS_SEARCH_ENTRY_SUBCOUNT_EQ:
+-            /* start of DCWPutValue */
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+-            if (values->vstring == NULL)
+-            {
+-                    values->vstring = "No Syntax Found";
+-            }
+-            proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+-            4, values->vstring);
+-            ioffset = ioffset + 4;
+-            values->vvalue = tvb_get_letohl(tvb, ioffset);
+-            ioffset = ioffset + 4;
+-            get_string(tvb, ioffset, values->vvalue, values->vstring);
+-            proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-                    values->vvalue, values->vstring);
+-            ioffset += values->vvalue;
+-            /* end of DCWPutValue */
++	/* start of DCWPutValue */
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
++	if (values->vstring == NULL)
++	{
++	    values->vstring = "No Syntax Found";
++	}
++	proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
++			      4, values->vstring);
++	ioffset = ioffset + 4;
++	values->vvalue = tvb_get_letohl(tvb, ioffset);
++	ioffset = ioffset + 4;
++	values->vstring = get_string(tvb, ioffset, values->vvalue);
++	proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
++			      values->vvalue, values->vstring);
++	ioffset += values->vvalue;
++	/* end of DCWPutValue */
+ 
+-            break;
++	break;
+ 
+     default: /* Unknown Iteration search Item type */
+-        if (tvb_length_remaining(tvb, ioffset) < 4) {
+-            THROW(ReportedBoundsError);
+-        }
+-        break;
++	if (tvb_length_remaining(tvb, ioffset) < 4) {
++		THROW(ReportedBoundsError);
++	}
++	break;
+     }
+     ioffset += align_4(tvb, ioffset);
+     values->voffset = ioffset;
+@@ -4202,7 +4231,7 @@
+         ioffset += 4;
+         for (i = 0; i < number_of_items; i++)
+         {
+-            it_subitem1 = proto_tree_add_text(it_subtree, tvb, ioffset, -1, "Item #: %d", i+1);
++            it_subitem1 = proto_tree_add_text(it_subtree, tvb, ioffset, -1, "Item #: %u", i+1);
+             it_subtree1 = proto_item_add_subtree(it_subitem1, ett_nds);
+ 
+             values->voffset = ioffset;
+@@ -4242,7 +4271,7 @@
+     /* start of DCWPutAttribute */
+     values->vvalue = tvb_get_letohl(tvb, ioffset);
+     ioffset = ioffset + 4;
+-    get_string(tvb, ioffset, values->vvalue, values->vstring);
++    values->vstring = get_string(tvb, ioffset, values->vvalue);
+     proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+             values->vvalue, values->vstring);
+     ioffset = ioffset + values->vvalue;
+@@ -4255,16 +4284,16 @@
+     values->vstring = (char *)match_strval(values->vvalue, nds_syntax);
+     if (values->vstring == NULL)
+     {
+-            values->vstring = "No Syntax Found";
++        values->vstring = "No Syntax Found";
+     }
+     proto_tree_add_string(it_tree, hf_nds_syntax, tvb, ioffset,
+     4, values->vstring);
+     ioffset = ioffset + 4;
+     values->vvalue = tvb_get_letohl(tvb, ioffset);
+     ioffset = ioffset + 4;
+-    get_string(tvb, ioffset, values->vvalue, values->vstring);
++    values->vstring = get_string(tvb, ioffset, values->vvalue);
+     proto_tree_add_string(it_tree, hf_mv_string, tvb, ioffset,
+-            values->vvalue, values->vstring);
++			  values->vvalue, values->vstring);
+     ioffset += values->vvalue;
+     /* end of DCWPutValue */
+ 
+@@ -4296,25 +4325,25 @@
+     {
+     case NDS_SEARCH_ITEM:
+         /* DCWPutSearchExp */
+-            process_search_expression(it_tree, tvb, values);
+-            break;
++	process_search_expression(it_tree, tvb, values);
++	break;
+ 
+     case NDS_SEARCH_EXTENSIBLE:
+-            /*err = DCWPutSearchExtMatch(context, syncFormat, cur, limit, sexp->u.extMatch);*/
+-            process_search_match(it_tree, tvb, values);
+-            break;
++	/*err = DCWPutSearchExtMatch(context, syncFormat, cur, limit, sexp->u.extMatch);*/
++	process_search_match(it_tree, tvb, values);
++	break;
+ 
+     case NDS_SEARCH_OR:
+     case NDS_SEARCH_AND:
+     case NDS_SEARCH_NOT:
+-            /* DCWPutSearchSubExp = process_search_subexpression */
+-            process_search_subexpression(it_tree, tvb, pinfo, values);
+-            break;
++	/* DCWPutSearchSubExp = process_search_subexpression */
++	process_search_subexpression(it_tree, tvb, pinfo, values);
++	break;
+     default: /* Unknown Iteration search type */
+-            if (tvb_length_remaining(tvb, ioffset) < 4) {
+-                THROW(ReportedBoundsError);
+-            }
+-            break;
++	if (tvb_length_remaining(tvb, ioffset) < 4) {
++            THROW(ReportedBoundsError);
++	}
++	break;
+     }
+     ioffset = values->voffset;
+     return;
+@@ -4325,10 +4354,9 @@
+ {
+     guint32     iter_flags, ioffset = values->voffset;
+     guint16     replica_num, event_num;
+-    char        temp_string[256];
+     nstime_t    ns;
+ 
+-    values->vstring = temp_string;
++    values->vstring = NULL;
+     ioffset += align_4(tvb, ioffset);
+     iter_flags = tvb_get_letohl(tvb, ioffset);
+ 
+@@ -4527,7 +4555,7 @@
+         values->vstring = (char *)match_strval(values->vvalue, nds_replica_type);
+         if (values->vstring == NULL)
+         {
+-                values->vstring = "No Replica Type Found";
++            values->vstring = "No Replica Type Found";
+         }
+         proto_tree_add_string(it_tree, hf_replica_type, tvb, ioffset,
+         4, values->vstring);
+@@ -4535,7 +4563,7 @@
+         values->vstring = (char *)match_strval(values->vvalue, nds_replica_state);
+         if (values->vstring == NULL)
+         {
+-                values->vstring = "No Replica State Found";
++            values->vstring = "No Replica State Found";
+         }
+         proto_tree_add_string(it_tree, hf_replica_state, tvb, ioffset,
+         4, values->vstring);
+@@ -4544,50 +4572,50 @@
+     if (iter_flags & DSI_BASE_CLASS) { /* Base Class */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);         /* Length of string */
+         ioffset = ioffset+4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string_format(it_tree, hf_value_string, tvb, ioffset,
+-                values->vvalue, temp_string,
+-                "Base Class: - %s", temp_string);
++                values->vvalue, values->vstring,
++                "Base Class: - %s", values->vstring);
+         ioffset = ioffset+values->vvalue;
+         ioffset += align_4(tvb, ioffset);
+     }
+     if (iter_flags & DSI_ENTRY_RDN) { /* Relative Distiguished Name */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);         /* Length of string */
+         ioffset = ioffset+4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string_format(it_tree, hf_value_string, tvb, ioffset,
+-                 values->vvalue, temp_string,
+-                 "Relative Distinguished Name - %s", temp_string);
++                 values->vvalue, values->vstring,
++                 "Relative Distinguished Name - %s", values->vstring);
+         ioffset = ioffset+values->vvalue;
+         ioffset += align_4(tvb, ioffset);
+     }
+     if (iter_flags & DSI_ENTRY_DN) { /* Distinguished Name */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);         /* Length of string */
+         ioffset = ioffset+4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string_format(it_tree, hf_value_string, tvb, ioffset,
+-                 values->vvalue, temp_string,
+-                 "Distinguished Name - %s", temp_string);
++                 values->vvalue, values->vstring,
++                 "Distinguished Name - %s", values->vstring);
+         ioffset = ioffset+values->vvalue;
+         ioffset += align_4(tvb, ioffset);
+     }
+     if (iter_flags & DSI_PARTITION_ROOT_DN) { /* Root Distinguished Name */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);         /* Length of string */
+         ioffset = ioffset+4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string_format(it_tree, hf_value_string, tvb, ioffset,
+-                 values->vvalue, temp_string,
+-                 "Root Distinguished Name - %s", temp_string);
++                 values->vvalue, values->vstring,
++                 "Root Distinguished Name - %s", values->vstring);
+         ioffset = ioffset+values->vvalue;
+         ioffset += align_4(tvb, ioffset);
+     }
+     if (iter_flags & DSI_PARENT_DN) { /* Parent Distinguished Name */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);         /* Length of string */
+         ioffset = ioffset+4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string_format(it_tree, hf_value_string, tvb, ioffset,
+-                 values->vvalue, temp_string,
+-                 "Parent Distinguished Name - %s", temp_string);
++                 values->vvalue, values->vstring,
++                 "Parent Distinguished Name - %s", values->vstring);
+         ioffset = ioffset+values->vvalue;
+         ioffset += align_4(tvb, ioffset);
+     }
+@@ -4601,9 +4629,9 @@
+     if (iter_flags & DSI_DEREFERENCED_BASE_CLASS) { /* Dereference Base Class */
+         values->vvalue = tvb_get_letohl(tvb, ioffset);
+         ioffset = ioffset + 4;
+-        get_string(tvb, ioffset, values->vvalue, values->vstring);
++        values->vstring = get_string(tvb, ioffset, values->vvalue);
+         proto_tree_add_string(it_tree, hf_deref_base, tvb, ioffset,
+-                values->vvalue, temp_string);
++                values->vvalue, values->vstring);
+         ioffset = ioffset + values->vvalue;
+     }
+     if (iter_flags & DSI_REPLICA_NUMBER) { /* Replica Number */
+@@ -4617,7 +4645,7 @@
+         values->vstring = (char *)match_strval(values->vvalue, nds_replica_state);
+         if (values->vstring == NULL)
+         {
+-                values->vstring = "No Replica State Found";
++            values->vstring = "No Replica State Found";
+         }
+         proto_tree_add_string(it_tree, hf_replica_state, tvb, ioffset,
+         4, values->vstring);
+@@ -4713,8 +4741,8 @@
+     values.vlength = 0;
+     values.voffset = 0;
+     values.hfname = 0;
+-    values.vdesc = "\0";
+-    values.vstring = "\0";
++    values.vdesc = "";
++    values.vstring = NULL;
+     values.mvtype = 0;
+     values.vflags = 0;
+ 
+@@ -4787,25 +4815,27 @@
+                 ioffset += 4;
+                 for (i=0; i < number_of_items; i++) {
+                     /* Process the attribute tag */
+-                    values.vvalue = tvb_get_letohl(tvb, ioffset);
++                    /*values.vvalue = tvb_get_letohl(tvb, ioffset);
+                     values.vstring = (char *)match_strval(values.vvalue, nds_tags);
+                     if(values.vstring == NULL)
+                     {
+-                            values.vstring = "No Tags Set";
++                        values.vstring = "No Tags Set";
+                     }
+-                    proto_tree_add_string(it_subtree, hf_nds_tag_string, tvb, ioffset, 4, values.vstring);
++                    proto_tree_add_string(it_subtree, hf_nds_tag_string, tvb, ioffset, 4, values.vstring);*/
++
++                    proto_tree_add_item(it_subtree, hf_iter_index, tvb, ioffset, 4, TRUE);
+                     ioffset = ioffset + 4;
+ 
+                     /* start of DCWPutAttribute */
+-                    values.vvalue = tvb_get_letohl(tvb, ioffset);
++                    /*values.vvalue = tvb_get_letohl(tvb, ioffset);
+                     ioffset = ioffset + 4;
+-                    get_string(tvb, ioffset, values.vvalue, values.vstring);
++                    values.vstring = get_string(tvb, ioffset, values.vvalue);
+                     proto_tree_add_string(it_subtree, hf_mv_string, tvb, ioffset,
+                             values.vvalue, values.vstring);
+-                    ioffset = ioffset + values.vvalue;
++                    ioffset = ioffset + values.vvalue;*/
+                     /* end of DCWPutAttribute */
+ 
+-                    ioffset += align_4(tvb, ioffset);
++                    /*ioffset += align_4(tvb, ioffset);*/
+                     if (tvb_length_remaining(tvb, ioffset) < 4) {
+                         THROW(ReportedBoundsError);
+                         return;
+@@ -4837,7 +4867,7 @@
+                     values.vstring = (char *)match_strval(values.vvalue, nds_tags);
+                     if(values.vstring == NULL)
+                     {
+-                            values.vstring = "No Tags Set";
++                        values.vstring = "No Tags Set";
+                     }
+                     proto_tree_add_string(it_tree, hf_nds_tag_string, tvb, ioffset, 4, values.vstring);
+                     ioffset = ioffset + 4;
+@@ -4845,7 +4875,7 @@
+                 }
+                 values.vvalue = tvb_get_letohl(tvb, ioffset);
+                 ioffset = ioffset + 4;
+-                get_string(tvb, ioffset, values.vvalue, values.vstring);
++                values.vstring = get_string(tvb, ioffset, values.vvalue);
+                 proto_tree_add_string(it_subtree, hf_mv_string, tvb, ioffset,
+                         values.vvalue, values.vstring);
+                 ioffset = ioffset + values.vvalue;
+@@ -4870,42 +4900,42 @@
+                     rcode, error_string );
+ 
+             if (rcode != 0 && ncp_echo_err) {
+-                    expert_add_info_format(pinfo, expert_item, PI_RESPONSE_CODE, PI_ERROR, "Iteration Verb Error: 0x%08x %s", rcode, error_string);
++                expert_add_info_format(pinfo, expert_item, PI_RESPONSE_CODE, PI_ERROR, "Iteration Verb Error: 0x%08x %s", rcode, error_string);
+             }
+             ioffset += 4;
+ 
+             switch (it_verb) {
+-			case IT_ATFIRST:
+-			case IT_ATEOF:
+-			case IT_ATLAST:
+-			case IT_ATBOF:
++	    case IT_ATFIRST:
++	    case IT_ATEOF:
++	    case IT_ATLAST:
++	    case IT_ATBOF:
+                 proto_tree_add_item(it_subtree, hf_iter_ans, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+             case IT_CLEAR:
+                 break;
+-			case IT_COPY:
++	    case IT_COPY:
+                 proto_tree_add_item(it_subtree, hf_iter_copy, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_COUNT:
++	    case IT_COUNT:
+                 proto_tree_add_item(it_subtree, hf_this_count, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_CREATE:
++	    case IT_CREATE:
+                 proto_tree_add_item(it_subtree, hf_nds_iterator, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_CURRENT:
+-			case IT_NEXT:
+-			case IT_PREV:
+-			case IT_FIRST:
+-			case IT_LAST:
++	    case IT_CURRENT:
++	    case IT_NEXT:
++	    case IT_PREV:
++	    case IT_FIRST:
++	    case IT_LAST:
+                 values.vvalue = tvb_get_letohl(tvb, ioffset);
+                 values.vstring = (char *)match_strval(values.vvalue, nds_info_type);
+                 if(values.vstring == NULL)
+                 {
+-                        values.vstring = "No Info Type Set";
++                    values.vstring = "No Info Type Set";
+                 }
+                 proto_tree_add_string(it_subtree, hf_nds_info_type, tvb, ioffset, 4, values.vstring);
+                 ioffset = ioffset + 4;
+@@ -4914,9 +4944,9 @@
+                 number_of_items = tvb_get_letohl(tvb, ioffset);
+                 proto_tree_add_item(it_subtree, hf_this_count, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+-				for (i = 0; i < number_of_items; i++)
+-				{
+-                    it_subitem1 = proto_tree_add_text(it_subtree, tvb, ioffset, -1, "Item #: %d", i+1);
++		for (i = 0; i < number_of_items; i++)
++		{
++                    it_subitem1 = proto_tree_add_text(it_subtree, tvb, ioffset, -1, "Item #: %u", i+1);
+                     it_subtree1 = proto_item_add_subtree(it_subitem1, ett_nds);
+ 
+                     ioffset += align_4(tvb, ioffset);
+@@ -4940,26 +4970,26 @@
+                 }
+                 break;
+             case IT_DESTROY:
+-			case IT_DONE:
++	    case IT_DONE:
+                 break;
+             case IT_GETPOSITION:
+                 proto_tree_add_item(it_subtree, hf_iter_position, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_ISPOSITIONABLE:
++	    case IT_ISPOSITIONABLE:
+                 proto_tree_add_item(it_subtree, hf_positionable, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_POSITION:
+-			case IT_POSITION_IT:
+-			case IT_SETFILTER:
++	    case IT_POSITION:
++	    case IT_POSITION_IT:
++	    case IT_SETFILTER:
+             case IT_TYPEDOWN:
+                 break;
+-			case IT_SETINDEX:
++	    case IT_SETINDEX:
+                 proto_tree_add_item(it_subtree, hf_iter_index, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+-			case IT_SKIP:
++	    case IT_SKIP:
+                 proto_tree_add_item(it_subtree, hf_num_skipped, tvb, ioffset, 4, TRUE);
+                 ioffset += 4;
+                 break;
+@@ -5004,25 +5034,24 @@
+         const char      *valuestr = "";
+         proto_tree      *ntree;
+         proto_tree      *atree;
+-	    proto_item      *nitem;
++        proto_item      *nitem;
+         proto_item      *aitem;
+         guint32         number_of_referrals = 0;
+-        nw_uni_t        mval_buf;
+         proto_tree      *estree;
+-	    proto_item      *esitem;
++        proto_item      *esitem;
+         guint16         replica_num = 0;
+         guint16         event_num = 0;
+         guint32         bvalue=0;
+         nds_val         temp_values;
+         proto_tree      *sub1tree;
+-	    proto_item      *sub1item;
++        proto_item      *sub1item;
+         proto_tree      *sub2tree;
+-	    proto_item      *sub2item;
+-	    gint		    length_remaining;
++        proto_item      *sub2item;
++        gint            length_remaining;
+         nstime_t        ns;
+ 
+-       	mval_buf.buffer[0] = '\0';
+         mv_resolve_name_string[0] = '\0';
++        values->vstring = "";
+ 
+         /* Is the value passed a string or UINT32? */
+         if(values->mvtype != MVTYPE_LIST_PARTITIONS && values->mvtype != MVTYPE_PROCESS_TAGS)
+@@ -5047,8 +5076,7 @@
+                                 ioffset += align_4(tvb, ioffset);
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value1);
+                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                         value1, values->vstring);
+                                 ioffset = ioffset + value1;
+@@ -5064,8 +5092,7 @@
+                                                 ioffset += align_4(tvb, ioffset);
+                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                 ioffset = ioffset + 4;
+-                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                values->vstring = mval_buf.buffer;
++                                                values->vstring = get_string(tvb, ioffset, value1);
+                                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                                         value1, values->vstring);
+                                                 ioffset = ioffset + value1;
+@@ -5085,8 +5112,7 @@
+                                                 ioffset = ioffset + 4;
+                                                 value2 = tvb_get_letohl(tvb, ioffset);
+                                                 ioffset = ioffset + 4;
+-                                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                values->vstring = mval_buf.buffer;
++                                                values->vstring = get_string(tvb, ioffset, value2);
+                                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                                         value2, values->vstring);
+                                                 ioffset += value2;
+@@ -5111,8 +5137,7 @@
+                                                 ioffset = ioffset + 4;
+                                                 value2 = tvb_get_letohl(tvb, ioffset);
+                                                 ioffset = ioffset + 4;
+-                                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                values->vstring = mval_buf.buffer;
++                                                values->vstring = get_string(tvb, ioffset, value2);
+                                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                                         value2, values->vstring);
+                                                 values->voffset=ioffset + value2;
+@@ -5121,7 +5146,7 @@
+                                                 value3 = tvb_get_letohl(tvb, ioffset);
+ 
+                 	                            proto_tree_add_uint_format(ntree, hf_nds_uint32value, tvb, ioffset, 4,
+-                        	                        value3, "Number of Values - %d", value3);
++                        	                        value3, "Number of Values - %u", value3);
+ 
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 1 ; r <= value3; r++ )
+@@ -5150,8 +5175,7 @@
+                                                 ioffset = ioffset + 4;
+                                                 value2 = tvb_get_letohl(tvb, ioffset);
+                                                 ioffset = ioffset + 4;
+-                                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                values->vstring = mval_buf.buffer;
++                                                values->vstring = get_string(tvb, ioffset, value2);
+                                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                                         value2, values->vstring);
+                                                 ioffset = ioffset + value2;
+@@ -5159,7 +5183,7 @@
+                                                 value3 = tvb_get_letohl(tvb, ioffset);
+ 
+                 	                        aitem = proto_tree_add_uint_format(ntree, hf_nds_uint32value, tvb, ioffset, 4,
+-                        	                        value3, "Number of Values - %d", value3);
++                        	                        value3, "Number of Values - %u", value3);
+ 
+                                                 atree = proto_item_add_subtree(aitem, ett_nds);
+ 
+@@ -5246,15 +5270,14 @@
+                                                 ioffset = ioffset + 4;
+                                                 value2 = tvb_get_letohl(tvb, ioffset);
+                                                 ioffset = ioffset + 4;
+-                                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                values->vstring = mval_buf.buffer;
++                                                values->vstring = get_string(tvb, ioffset, value2);
+                                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                                         value2, values->vstring);
+                                                 ioffset = ioffset + value2;
+                                                 value3 = tvb_get_letohl(tvb, ioffset);
+ 
+                 	                        proto_tree_add_uint_format(ntree, hf_nds_uint32value, tvb, ioffset, 4,
+-                        	                        value3, "Number of Values - %d", value3);
++                        	                        value3, "Number of Values - %u", value3);
+ 
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 1 ; r <= value3; r++ )
+@@ -5346,8 +5369,7 @@
+                         {
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value1);
+                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                         value1, values->vstring);
+                                 ioffset = ioffset + value1;
+@@ -5364,8 +5386,7 @@
+                                 ioffset += align_4(tvb, ioffset);
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value1);
+                                 proto_tree_add_string(ntree, hf_nds_base, tvb, ioffset,
+                                         value1, values->vstring);
+                                 values->mvtype = MVTYPE_ATTR_REQUEST;
+@@ -5376,12 +5397,10 @@
+                 case MVTYPE_READ_REPLICAS:	/* Read Replicas */
+                         for (i = 1 ; i <= values->vvalue; i++ )
+                         {
+-
+                                 bvalue = 0x00000001;
+ 
+                                 for (r = 0 ; r < 9; r++ )
+                                 {
+-
+                                         if (values->vflags & bvalue)
+                                         {
+                                                 switch(bvalue)
+@@ -5475,8 +5494,7 @@
+                                                         case 0x00000040:                /*p3values.bit7 = "Distinguished Name"*/
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_name, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -5508,7 +5526,6 @@
+                                                                 break;
+                                                         default:
+                                                                 break;
+-
+                                                 }
+                                         }
+                                         bvalue = bvalue*2;
+@@ -5533,23 +5550,23 @@
+                                valuestr = match_strval(value1, nds_kind_of_changes);
+                                if (valuestr == NULL)
+                                {
+-                                               valuestr="(Kind Change Not Found)";
++				       valuestr="(Kind Change Not Found)";
+                                }
+                                tvb_ensure_bytes_exist(tvb, ioffset, values->vlength);
+                                proto_tree_add_uint_format(ntree, hf_nds_uint32value, tvb, ioffset,
+-                               values->vlength, value1, valuestr, value1);
++                                                          values->vlength, value1, valuestr, value1);
+                                ioffset = ioffset+4;
+                                value2 = tvb_get_letohl(tvb, ioffset);
+                                ioffset = ioffset + 4;
+-                               get_string(tvb, ioffset, value2, mval_buf.buffer);   /* Name of Attribute */
+-                               temp_values.vstring = mval_buf.buffer;
++                               temp_values.vstring = get_string(tvb, ioffset, value2);   /* Name of Attribute */
+                                proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+-                                       value2, temp_values.vstring);
++						     value2, temp_values.vstring);
+                                ioffset = ioffset + value2;
+                                ioffset += align_4(tvb, ioffset);
+                                if(value1 != 1 && value1 != 6)
+                                {
+                                        values->voffset = ioffset;
++                                       /* XX: Is values.vstring set properly at this point ?? */
+                                        print_nds_values(ntree, tvb, 9, values);
+                                        ioffset = values->voffset;
+                                }
+@@ -5559,12 +5576,11 @@
+                 case MVTYPE_ADDR_REFERRAL_REQUEST: /* Address Referral Request */
+                         for (i = 0 ; i < values->vvalue; i++ )
+                         {
+-
+                                value1 = tvb_get_letohl(tvb, ioffset);
+                                valuestr = match_strval(value1, nds_protocol_type);
+                                if (valuestr == NULL)
+                                {
+-                                               valuestr="(Undefined Protocol)";
++				       valuestr="(Undefined Protocol)";
+                                }
+                                tvb_ensure_bytes_exist(tvb, ioffset, values->vlength);
+                                proto_tree_add_uint_format(ntree, hf_nds_uint32value, tvb, ioffset,
+@@ -5579,13 +5595,13 @@
+                         for (r = 1 ; r <= number_of_referrals; r++ )
+                         {
+ 		                aitem = proto_tree_add_uint_format(ntree, hf_referral_record, tvb, 6, 0,
+-		                r, "NDS Referral Record #%u", r);
++								   r, "NDS Referral Record #%u", r);
+                                 atree = proto_item_add_subtree(aitem, ett_nds);
+ 
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+ 
+ 	                        proto_tree_add_uint_format(atree, hf_referral_addcount, tvb, ioffset, 4,
+-        	                        value1, "Number of Addresses in Referral - %d", value1);
++        	                        value1, "Number of Addresses in Referral - %u", value1);
+ 
+                                 ioffset = ioffset + 4;
+                                 for (i = 1 ; i <= value1; i++ )
+@@ -5623,7 +5639,7 @@
+                                                         break;
+                                                 case NDS_PTYPE_URL:
+                                                 case NDS_PTYPE_DNS:
+-                                                        get_string(tvb, ioffset, value3, values->vstring);
++                                                        values->vstring = get_string(tvb, ioffset, value3);
+                                                         proto_tree_add_string(atree, hf_value_string, tvb, ioffset,
+                                                                 value3, values->vstring);
+                                                         break;
+@@ -5643,7 +5659,7 @@
+                         for (r = 1 ; r <= number_of_referrals; r++ )
+                         {
+ 		                aitem = proto_tree_add_uint_format(ntree, hf_referral_record, tvb, 6, 0,
+-		                r, "NDS Referral Record #%u", r);
++								   r, "NDS Referral Record #%u", r);
+                                 atree = proto_item_add_subtree(aitem, ett_nds);
+ 
+                                 value2 = tvb_get_letohl(tvb, ioffset);
+@@ -5680,7 +5696,7 @@
+                                                 break;
+                                         case NDS_PTYPE_URL:
+                                         case NDS_PTYPE_DNS:
+-                                                get_string(tvb, ioffset, value3, values->vstring);
++                                                values->vstring = get_string(tvb, ioffset, value3);
+                                                 proto_tree_add_string(atree, hf_value_string, tvb, ioffset,
+                                                       value3, values->vstring);
+                                                 break;
+@@ -5719,7 +5735,7 @@
+                         g_strlcpy(mv_resolve_name_string, values->vstring, 128);
+                         value4 = tvb_get_letohl(tvb, ioffset);
+ 		                aitem = proto_tree_add_uint_format(ntree, hf_referral_record, tvb, ioffset, 4,
+-		                    value4, "Referral Protocols - %d", value4);
++		                    value4, "Referral Protocols - %u", value4);
+                         atree = proto_item_add_subtree(aitem, ett_nds);
+                         ioffset += 4;
+                         for (i = 0 ; i < value4; i++ )
+@@ -5728,15 +5744,15 @@
+                                valuestr = match_strval(value5, nds_protocol_type);
+                                if (valuestr == NULL)
+                                {
+-                                               valuestr="(Undefined Protocol)";
++				       valuestr="(Undefined Protocol)";
+                                }
+                                proto_tree_add_string_format(atree, hf_value_string, tvb, ioffset,
+-                               4, valuestr, "Protocol -> %s", valuestr);
++							    4, valuestr, "Protocol -> %s", valuestr);
+                                ioffset = ioffset+4;
+                         }
+                         value6 = tvb_get_letohl(tvb, ioffset);
+ 		                aitem = proto_tree_add_uint_format(ntree, hf_referral_record, tvb, ioffset, 4,
+-		                    value6, "Tree Walking Protocols - %d", value6);
++		                    value6, "Tree Walking Protocols - %u", value6);
+                         atree = proto_item_add_subtree(aitem, ett_nds);
+                         ioffset += 4;
+                         for (i = 0 ; i < value6; i++ )
+@@ -5745,10 +5761,10 @@
+                                valuestr = match_strval(value7, nds_protocol_type);
+                                if (valuestr == NULL)
+                                {
+-                                               valuestr="(Undefined Protocol)";
++				       valuestr="(Undefined Protocol)";
+                                }
+                                proto_tree_add_string_format(atree, hf_value_string, tvb, ioffset,
+-                               4, valuestr, "Protocol -> %s", valuestr);
++							    4, valuestr, "Protocol -> %s", valuestr);
+                                ioffset = ioffset+4;
+                         }
+                         values->vstring = " ";
+@@ -5768,12 +5784,12 @@
+                 case MVTYPE_LIST_PARTITIONS:	/* List Partitions */
+                         number_of_referrals = values->vvalue;
+                         /* A bad packet could put us in a tight loop so trap for anything
+-                         * over 256 referals.
++                         * over 256 referrals.
+                          */
+                         if (number_of_referrals > 256) {
+-                            proto_tree_add_text(ntree, tvb, 0, 0, "[ Bad referal at offset: %u ]", ioffset);
+-                            THROW(ReportedBoundsError);
+-                            break;
++				proto_tree_add_text(ntree, tvb, 0, 0, "[ Bad referal at offset: %u ]", ioffset);
++				THROW(ReportedBoundsError);
++				break;
+                         }
+                         for (i = 0; i < number_of_referrals; i++)
+                         {
+@@ -5789,7 +5805,6 @@
+                                                         case 0x00000001:                /* Information Flags */
+                                                                 temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
+                                                                 temp_values.vtype = VTYPE_BITFIELD;
+-                                                                temp_values.vstring = mval_buf.buffer;
+                                                                 temp_values.vdesc = "Information Flags (low) Byte:";
+                                                                 temp_values.vlength = 2;
+                                                                 temp_values.hfname= hf_nds_rflags;
+@@ -5830,7 +5845,6 @@
+                                                                 ioffset = ioffset+2;
+                                                                 temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
+                                                                 temp_values.vtype = VTYPE_BITFIELD;
+-                                                                temp_values.vstring = mval_buf.buffer;
+                                                                 temp_values.vdesc = "Information Flags (high) Byte:";
+                                                                 temp_values.vlength = 2;
+                                                                 temp_values.hfname= hf_nds_rflags;
+@@ -5879,7 +5893,6 @@
+                                                         case 0x00000004:                /* Entry Flags */
+                                                                 temp_values.vvalue = tvb_get_letohl(tvb, ioffset);
+                                                                 temp_values.vtype = VTYPE_BITFIELD;
+-                                                                temp_values.vstring = mval_buf.buffer;
+                                                                 temp_values.vdesc = "Entry Flags:";
+                                                                 temp_values.vlength = 2;
+                                                                 temp_values.hfname= hf_nds_eflags;
+@@ -5922,7 +5935,7 @@
+                                                         case 0x0000008:                 /* Subordinate Count */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 proto_tree_add_uint_format(ntree, hf_sub_count, tvb, ioffset,
+-                                                                        4, value1, "Subordinate Count %d", value1);
++                                                                        4, value1, "Subordinate Count %u", value1);
+                                                                 ioffset = ioffset + 4;
+                                                                 break;
+                                                         case 0x0000010:                 /* Modification Time */
+@@ -5977,7 +5990,7 @@
+                                                         case 0x00000200:                /* Revision Count */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 proto_tree_add_uint_format(ntree, hf_nds_revision, tvb, ioffset,
+-                                                                        4, value1, "Revision Count %d", value1);
++                                                                        4, value1, "Revision Count %u", value1);
+                                                                 ioffset = ioffset + 4;
+                                                                 break;
+                                                         case 0x00000400:                /* Replica Type & State */
+@@ -6003,8 +6016,7 @@
+                                                         case 0x00000800:                /* Base Class */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_base, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6012,8 +6024,7 @@
+                                                         case 0x00001000:                /* Relative Distinguished Name */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_relative_dn, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6021,8 +6032,7 @@
+                                                         case 0x00002000:                /* Distinguished Name */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_name, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6030,8 +6040,7 @@
+                                                         case 0x00004000:                /* Root Distinguished Name */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_name, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6039,8 +6048,7 @@
+                                                         case 0x00008000:                /* Parent Distinguished Name */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_nds_name, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6055,8 +6063,7 @@
+                                                         case 0x00020000:                /* Dereference Base Class */
+                                                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                                                 ioffset = ioffset + 4;
+-                                                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                                                temp_values.vstring = mval_buf.buffer;
++                                                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                                                 proto_tree_add_string(ntree, hf_deref_base, tvb, ioffset,
+                                                                         value1, temp_values.vstring);
+                                                                 ioffset = ioffset + value1;
+@@ -6093,8 +6100,7 @@
+                                 ioffset += align_4(tvb, ioffset);
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                temp_values.vstring = mval_buf.buffer;
++                                temp_values.vstring = get_string(tvb, ioffset, value1);
+                                 sub1item = proto_tree_add_string(ntree, hf_nds_base_class, tvb, ioffset,
+                                         value1, temp_values.vstring);
+                                 sub1tree = proto_item_add_subtree(sub1item, ett_nds);
+@@ -6104,7 +6110,6 @@
+                                 {
+                                         temp_values.vvalue = tvb_get_letohl(tvb, ioffset);
+                                         temp_values.vtype = VTYPE_BITFIELD;
+-                                        temp_values.vstring = mval_buf.buffer;
+                                         temp_values.vdesc = "Class Flags:";
+                                         temp_values.vlength = 2;
+                                         temp_values.hfname= hf_nds_cflags;
+@@ -6161,15 +6166,14 @@
+                                         {
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Super Classes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Super Classes %d", value1);
++                                                        4, value1, "Super Classes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_nds_super, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6177,15 +6181,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Containment Classes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Containment Classes %d", value1);
++                                                        4, value1, "Containment Classes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_nds_base_class, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6193,15 +6196,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Naming Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Naming Attributes %d", value1);
++                                                        4, value1, "Naming Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6209,15 +6211,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Mandatory Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Mandatory Attributes %d", value1);
++                                                        4, value1, "Mandatory Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6225,7 +6226,7 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Optional Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Optional Attributes %d", value1);
++                                                        4, value1, "Optional Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+@@ -6233,8 +6234,7 @@
+                                                         ioffset += align_4(tvb, ioffset);
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6249,15 +6249,14 @@
+                                         {
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Containment Classes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Containment Classes %d", value1);
++                                                        4, value1, "Containment Classes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_nds_base_class, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6265,15 +6264,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Naming Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Naming Attributes %d", value1);
++                                                        4, value1, "Naming Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6281,15 +6279,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Mandatory Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Mandatory Attributes %d", value1);
++                                                        4, value1, "Mandatory Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6297,15 +6294,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Optional Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Optional Attributes %d", value1);
++                                                        4, value1, "Optional Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6351,15 +6347,14 @@
+                                                 /* Class Definition */
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Super Classes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Super Classes %d", value1);
++                                                        4, value1, "Super Classes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_nds_super, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6367,15 +6362,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Containment Classes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Containment Classes %d", value1);
++                                                        4, value1, "Containment Classes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_nds_base_class, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6383,15 +6377,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Naming Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Naming Attributes %d", value1);
++                                                        4, value1, "Naming Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6399,15 +6392,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Mandatory Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Mandatory Attributes %d", value1);
++                                                        4, value1, "Mandatory Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6415,15 +6407,14 @@
+                                                 }
+                                                 value1 = tvb_get_letohl(tvb, ioffset);  /* Optional Attributes */
+                                                 sub2item = proto_tree_add_uint_format(sub1tree, hf_nds_number_of_items, tvb, ioffset,
+-                                                        4, value1, "Optional Attributes %d", value1);
++                                                        4, value1, "Optional Attributes %u", value1);
+                                                 sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+                                                 ioffset = ioffset + 4;
+                                                 for (r = 0; r < value1; r++)
+                                                 {
+                                                         value2 = tvb_get_letohl(tvb, ioffset);
+                                                         ioffset = ioffset + 4;
+-                                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                                        temp_values.vstring = mval_buf.buffer;
++                                                        temp_values.vstring = get_string(tvb, ioffset, value2);
+                                                         proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+                                                                 value2, temp_values.vstring);
+                                                         ioffset = ioffset + value2;
+@@ -6448,8 +6439,7 @@
+                                 ioffset += align_4(tvb, ioffset);
+                                 value1 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value1, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value1);
+                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                         value1, values->vstring);
+                                 ioffset = ioffset + value1;
+@@ -6461,15 +6451,14 @@
+                         ioffset += align_4(tvb, ioffset);
+                         value1 = tvb_get_letohl(tvb, ioffset);
+                         proto_tree_add_uint_format(ntree, hf_nds_att_del, tvb, ioffset,
+-                                4, value1, "Attribute Names to Delete %d", value1);
++                                4, value1, "Attribute Names to Delete %u", value1);
+                         ioffset = ioffset + 4;
+                         for (i = 1 ; i <= value1; i++ )   /* Attribute Names to delete*/
+                         {
+                                 ioffset += align_4(tvb, ioffset);
+                                 value2 = tvb_get_letohl(tvb, ioffset);
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value2);
+                                 proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                         value2, values->vstring);
+                                 ioffset = ioffset + value2;
+@@ -6481,23 +6470,21 @@
+                         ioffset += align_4(tvb, ioffset);
+                         value1 = tvb_get_letohl(tvb, ioffset);
+                         proto_tree_add_uint_format(ntree, hf_nds_acl_add, tvb, ioffset,
+-                                4, value1, "ACL Templates to Add %d", value1);
++                                4, value1, "ACL Templates to Add %u", value1);
+                         ioffset = ioffset + 4;
+                         for (i = 1 ; i <= value1; i++ )   /* ACL templates to add*/
+                         {
+                                 ioffset += align_4(tvb, ioffset);
+                                 value2 = tvb_get_letohl(tvb, ioffset);  /* Attribute Name */
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value2);
+                                 proto_tree_add_string(ntree, hf_nds_attribute_dn, tvb, ioffset,
+                                         value2, values->vstring);
+                                 ioffset = ioffset + value2;
+                                 ioffset += align_4(tvb, ioffset);
+                                 value2 = tvb_get_letohl(tvb, ioffset);  /* DN of Trustee */
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value2);
+                                 proto_tree_add_string(ntree, hf_nds_trustee_dn, tvb, ioffset,
+                                         value2, values->vstring);
+                                 ioffset = ioffset + value2;
+@@ -6514,23 +6501,21 @@
+                         ioffset += align_4(tvb, ioffset);
+                         value1 = tvb_get_letohl(tvb, ioffset);
+                         proto_tree_add_uint_format(ntree, hf_nds_acl_del, tvb, ioffset,
+-                                4, value1, "ACL Templates to Delete %d", value1);
++                                4, value1, "ACL Templates to Delete %u", value1);
+                         ioffset = ioffset + 4;
+                         for (i = 1 ; i <= value1; i++ )   /* ACL templates to delete*/
+                         {
+                                 ioffset += align_4(tvb, ioffset);
+                                 value2 = tvb_get_letohl(tvb, ioffset);  /* Attribute Name */
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value2);
+                                 proto_tree_add_string(ntree, hf_nds_attribute_dn, tvb, ioffset,
+                                         value2, values->vstring);
+                                 ioffset = ioffset + value2;
+                                 ioffset += align_4(tvb, ioffset);
+                                 value2 = tvb_get_letohl(tvb, ioffset);  /* DN of Trustee */
+                                 ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
++                                values->vstring = get_string(tvb, ioffset, value2);
+                                 proto_tree_add_string(ntree, hf_nds_trustee_dn, tvb, ioffset,
+                                         value2, values->vstring);
+                                 ioffset = ioffset + value2;
+@@ -6541,7 +6526,8 @@
+                                 ioffset = ioffset + 4;
+                         }
+                         break;
+-            case MVTYPE_PROCESS_TAGS: /* Process tags and paths depending on name type returned. */
++
++                case MVTYPE_PROCESS_TAGS: /* Process tags and paths depending on name type returned. */
+                         switch (values->vflags) {
+ 
+                         case 8:  /* Tuned Name */
+@@ -6551,235 +6537,237 @@
+                             valuestr = match_strval(value1, nds_tuned_tags);
+                             if (valuestr == NULL)
+                             {
+-                                            valuestr="(Undefined Tuned Name Tag)";
++				    valuestr="(Undefined Tuned Name Tag)";
+                             }
+                             proto_tree_add_string_format(ntree, hf_value_string, tvb, ioffset,
+-                            2, valuestr, "Tuned Name Tag -> %s", valuestr);
++							 2, valuestr, "Tuned Name Tag -> %s", valuestr);
+                             ioffset += 2;
+                             ioffset += align_4(tvb, ioffset);
+                             if (value1 == 0) { /* RDN Hint - really just returns the dist name + timestamp info */
+-                                value2 = tvb_get_letohl(tvb, ioffset);  /* Distinguished Name Len, String[len]*/
+-                                ioffset = ioffset + 4;
+-                                get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                values->vstring = mval_buf.buffer;
+-                                proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+-                                        value2, values->vstring);
+-                                ioffset += value2;
+-                                ioffset += align_4(tvb, ioffset);
+-                                ns.secs = tvb_get_letohl(tvb, ioffset);   /* Seconds */
+-                                ns.nsecs = 0;
+-                                proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
+-                                        4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
+-                                ioffset += 4;
+-                                replica_num = tvb_get_letohs(tvb, ioffset);   /* Replica */
+-                                proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
+-                                        2, replica_num);
+-                                ioffset = ioffset + 2;
+-                                event_num = tvb_get_letohs(tvb, ioffset);   /* Event */
+-                                proto_tree_add_item(ntree, hf_nds_event_num, tvb, ioffset,
+-                                        2, event_num);
+-                                ioffset = ioffset + 2;
++				    value2 = tvb_get_letohl(tvb, ioffset);  /* Distinguished Name Len, String[len]*/
++				    ioffset = ioffset + 4;
++				    values->vstring = get_string(tvb, ioffset, value2);
++				    proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
++							  value2, values->vstring);
++				    ioffset += value2;
++				    ioffset += align_4(tvb, ioffset);
++				    ns.secs = tvb_get_letohl(tvb, ioffset);   /* Seconds */
++				    ns.nsecs = 0;
++				    proto_tree_add_time_format(ntree, hf_es_seconds, tvb, ioffset,
++							       4, &ns, "Creation Timestamp: %s", abs_time_to_str(&ns));
++				    ioffset += 4;
++				    replica_num = tvb_get_letohs(tvb, ioffset);   /* Replica */
++				    proto_tree_add_item(ntree, hf_nds_replica_num, tvb, ioffset,
++							2, replica_num);
++				    ioffset = ioffset + 2;
++				    event_num = tvb_get_letohs(tvb, ioffset);   /* Event */
++				    proto_tree_add_item(ntree, hf_nds_event_num, tvb, ioffset,
++							2, event_num);
++				    ioffset = ioffset + 2;
+                             }
+                             else /* Process the full RDN history including ancestors */
+                             {
+-                                value1 = tvb_get_letohl(tvb, ioffset);
+-                                sub1item = proto_tree_add_uint_format(ntree, hf_nds_acl_del, tvb, ioffset,
+-                                        4, value1, "Number of RDN Items %d", value1);
+-                                sub1tree = proto_item_add_subtree(sub1item, ett_nds);
+-                                ioffset = ioffset + 4;
+-                                for (i=1; i <= value1; i++) {
+-
+-                                    sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Item %d", i);
+-                                    sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+-                                    ioffset += align_4(tvb, ioffset);
+-
+-                                    value5 = tvb_get_letohl(tvb, ioffset);
+-                                    valuestr = match_strval(value5, nds_tuned_item_tags);
+-                                    if (valuestr == NULL)
+-                                    {
+-                                                 valuestr="(Undefined Tuned Name Tag)";
+-                                    }
+-                                    if (value5 == 0) { /* Items are timestamp + Distinguished name (0 value == one entry)*/
+-                                        proto_tree_add_string_format(sub2tree, hf_value_string, tvb, ioffset,
+-                                            4, valuestr, "Item Tag -> %s", valuestr);
+-                                        ioffset += 4;
+-                                        ns.secs = tvb_get_letohl(tvb, ioffset);   /* Seconds */
+-                                        ns.nsecs = 0;
+-                                        proto_tree_add_time_format(sub2tree, hf_es_seconds, tvb, ioffset,
+-                                                4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
+-                                        ioffset += 4;
+-                                        replica_num = tvb_get_letohs(tvb, ioffset);   /* Replica */
+-                                        proto_tree_add_item(sub2tree, hf_nds_replica_num, tvb, ioffset,
+-                                                2, replica_num);
+-                                        ioffset = ioffset + 2;
+-                                        event_num = tvb_get_letohs(tvb, ioffset);   /* Event */
+-                                        proto_tree_add_item(sub2tree, hf_nds_event_num, tvb, ioffset,
+-                                                2, event_num);
+-                                        ioffset = ioffset + 2;
+-                                        value2 = tvb_get_letohl(tvb, ioffset);  /* Distinguished Name Len, String[len]*/
+-                                        ioffset = ioffset + 4;
+-                                        get_string(tvb, ioffset, value2, mval_buf.buffer);
+-                                        values->vstring = mval_buf.buffer;
+-                                        proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
+-                                                value2, values->vstring);
+-                                        ioffset += value2;
++				    value1 = tvb_get_letohl(tvb, ioffset);
++				    sub1item = proto_tree_add_uint_format(ntree, hf_nds_acl_del, tvb, ioffset,
++									  4, value1, "Number of RDN Items %u", value1);
++				    sub1tree = proto_item_add_subtree(sub1item, ett_nds);
++				    ioffset = ioffset + 4;
++				    for (i=1; i <= value1; i++) {
++					    sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Item %u", i);
++					    sub2tree = proto_item_add_subtree(sub2item, ett_nds);
++					    ioffset += align_4(tvb, ioffset);
+ 
+-                                    }
+-                            }
+-                            values->voffset=ioffset;
+-                            break;
++					    value5 = tvb_get_letohl(tvb, ioffset);
++					    valuestr = match_strval(value5, nds_tuned_item_tags);
++					    if (valuestr == NULL)
++					    {
++						    valuestr="(Undefined Tuned Name Tag)";
++					    }
++					    if (value5 == 0) { /* Items are timestamp + Distinguished name (0 value == one entry)*/
++						    proto_tree_add_string_format(sub2tree, hf_value_string, tvb, ioffset,
++										 4, valuestr, "Item Tag -> %s", valuestr);
++						    ioffset += 4;
++						    ns.secs = tvb_get_letohl(tvb, ioffset);   /* Seconds */
++						    ns.nsecs = 0;
++						    proto_tree_add_time_format(sub2tree, hf_es_seconds, tvb, ioffset,
++									       4, &ns, "Timestamp: %s", abs_time_to_str(&ns));
++						    ioffset += 4;
++						    replica_num = tvb_get_letohs(tvb, ioffset);   /* Replica */
++						    proto_tree_add_item(sub2tree, hf_nds_replica_num, tvb, ioffset,
++									2, replica_num);
++						    ioffset = ioffset + 2;
++						    event_num = tvb_get_letohs(tvb, ioffset);   /* Event */
++						    proto_tree_add_item(sub2tree, hf_nds_event_num, tvb, ioffset,
++									2, event_num);
++						    ioffset = ioffset + 2;
++						    value2 = tvb_get_letohl(tvb, ioffset);  /* Distinguished Name Len, String[len]*/
++						    ioffset = ioffset + 4;
++						    values->vstring = get_string(tvb, ioffset, value2);
++						    proto_tree_add_string(sub2tree, hf_mv_string, tvb, ioffset,
++									  value2, values->vstring);
++						    ioffset += value2;
++					    }
++					    /* XXX: What if "multiple items" ?                 */
++					    /*      What if "Undefined ... " ?                 */  
++					    /*      For now: we'll just keep on walking...     */
++					    /*      Presumably we'll get a ReportedBoundsError */
++					    /*       pretty quickly.                           */
++					    else   /* Undefined or "multiple items" ... */
++					    {
++						    ioffset += 4;
++					    }
++				    } /* for */
++			    } /* else */
++			    values->voffset=ioffset;
++			    break;
+                         default: /* All other name types are just a string */
+-                            get_string(tvb, ioffset, values->vlength, mval_buf.buffer);
+-                            values->vstring = mval_buf.buffer;
++                            values->vstring = get_string(tvb, ioffset, values->vlength);
+                             proto_tree_add_string(ntree, hf_mv_string, tvb, ioffset,
+                                     values->vlength, values->vstring);
+                             values->voffset=ioffset + values->vlength;
+                             ioffset = values->voffset;
+                             ioffset += align_4(tvb, ioffset);
+                             break;
+-                        }
+-                        break;
+-                }
+-                break;
+-            case MVTYPE_PROCESS_ITERATOR: /* Process Iterator subverbs. */
+-                temp_values.vvalue = tvb_get_letohl(tvb, ioffset);
++                        } /* switch (values->vflags) */
++			break;
+ 
+-                temp_values.vstring = (char *)match_strval(temp_values.vvalue, nds_info_type);
+-                if(temp_values.vstring == NULL)
+-                {
+-                        temp_values.vstring = "No Info Type Set";
+-                }
+-                /*g_strdup(value)*/
+-                proto_tree_add_string(ntree, hf_nds_info_type, tvb, ioffset, 4, temp_values.vstring);
+-                ioffset = ioffset + 4;
+-                temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
+-                value5 = tvb_get_letohl(tvb, ioffset);
+-                temp_values.vdesc = "Information Flags (low) Byte:";
+-                temp_values.vlength = 2;
+-                temp_values.hfname = hf_nds_rflags;
+-                temp_values.voffset = ioffset;
+-                temp_values.bit1 = "Output Flags";
+-                temp_values.bit1hfname = hf_bit1infoflagsl;
+-                temp_values.bit2 = "Entry ID";
+-                temp_values.bit2hfname = hf_bit2infoflagsl;
+-                temp_values.bit3 = "Entry Flags";
+-                temp_values.bit3hfname = hf_bit3infoflagsl;
+-                temp_values.bit4 = "Subordinate Count";
+-                temp_values.bit4hfname = hf_bit4infoflagsl;
+-                temp_values.bit5 = "Modification Time";
+-                temp_values.bit5hfname = hf_bit5infoflagsl;
+-                temp_values.bit6 = "Modification Timestamp";
+-                temp_values.bit6hfname = hf_bit6infoflagsl;
+-                temp_values.bit7 = "Creation Timestamp";
+-                temp_values.bit7hfname = hf_bit7infoflagsl;
+-                temp_values.bit8 = "Partition Root ID";
+-                temp_values.bit8hfname = hf_bit8infoflagsl;
+-                temp_values.bit9 = "Parent ID";
+-                temp_values.bit9hfname = hf_bit9infoflagsl;
+-                temp_values.bit10 = "Revision Count";
+-                temp_values.bit10hfname = hf_bit10infoflagsl;
+-                temp_values.bit11 = "Replica Type";
+-                temp_values.bit11hfname = hf_bit11infoflagsl;
+-                temp_values.bit12 = "Base Class";
+-                temp_values.bit12hfname = hf_bit12infoflagsl;
+-                temp_values.bit13 = "Relative Distinguished Name";
+-                temp_values.bit13hfname = hf_bit13infoflagsl;
+-                temp_values.bit14 = "Distinguished Name";
+-                temp_values.bit14hfname = hf_bit14infoflagsl;
+-                temp_values.bit15 = "Root Distinguished Name";
+-                temp_values.bit15hfname = hf_bit15infoflagsl;
+-                temp_values.bit16 = "Parent Distinguished Name";
+-                temp_values.bit16hfname = hf_bit16infoflagsl;
+-                process_bitfield(ntree, tvb, &temp_values);
+-                ioffset = ioffset+2;
+-                temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
+-                temp_values.vtype = VTYPE_BITFIELD;
+-                temp_values.vdesc = "Information Flags (high) Byte:";
+-                temp_values.vlength = 2;
+-                temp_values.hfname= hf_nds_rflags;
+-                temp_values.voffset = ioffset;
+-                temp_values.bit1 = "Purge Time";
+-                temp_values.bit1hfname = hf_bit1infoflagsh;
+-                temp_values.bit2 = "Dereference Base Class";
+-                temp_values.bit2hfname = hf_bit2infoflagsh;
+-                temp_values.bit3 = "Replica Number";
+-                temp_values.bit3hfname = hf_bit3infoflagsh;
+-                temp_values.bit4 = "Replica State";
+-                temp_values.bit4hfname = hf_bit4infoflagsh;
+-                temp_values.bit5 = "Federation Boundary";
+-                temp_values.bit5hfname = hf_bit5infoflagsh;
+-                temp_values.bit6 = "Schema Boundary";
+-                temp_values.bit6hfname = hf_bit6infoflagsh;
+-                temp_values.bit7 = "Federation Boundary ID";
+-                temp_values.bit7hfname = hf_bit7infoflagsh;
+-                temp_values.bit8 = "Schema Boundary ID";
+-                temp_values.bit8hfname = hf_bit8infoflagsh;
+-                temp_values.bit9 = "Current Subcount";
+-                temp_values.bit9hfname = hf_bit9infoflagsh;
+-                temp_values.bit10 = "Local Entry Flags";
+-                temp_values.bit10hfname = hf_bit10infoflagsh;
+-                temp_values.bit11 = "Not Defined";
+-                temp_values.bit11hfname = hf_bit11infoflagsh;
+-                temp_values.bit12 = "Not Defined";
+-                temp_values.bit12hfname = hf_bit12infoflagsh;
+-                temp_values.bit13 = "Not Defined";
+-                temp_values.bit13hfname = hf_bit13infoflagsh;
+-                temp_values.bit14 = "Not Defined";
+-                temp_values.bit14hfname = hf_bit14infoflagsh;
+-                temp_values.bit15 = "Not Defined";
+-                temp_values.bit15hfname = hf_bit15infoflagsh;
+-                temp_values.bit16 = "Not Defined";
+-                temp_values.bit16hfname = hf_bit16infoflagsh;
+-                ioffset = ioffset+2;
+-                process_bitfield(ntree, tvb, &temp_values);
+-                ioffset += 4;
+-                proto_tree_add_item(ntree, hf_nds_time_filter, tvb, ioffset, 4, FALSE);
+-                ioffset += 4;
+-                proto_tree_add_item(ntree, hf_nds_all_attr, tvb, ioffset, 4, FALSE);
+-                ioffset += 4;
+-                value2 = tvb_get_letohl(tvb, ioffset);
+-                sub1item = proto_tree_add_uint_format(ntree, hf_nds_number_of_items, tvb, ioffset,
+-                        4, value2, "Number of Attributes %d", value2);
+-                sub1tree = proto_item_add_subtree(sub1item, ett_nds);
+-                ioffset += 4;
+-                for (i=1; i<=value2; i++) {
+-                    sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Attribute %d", i);
+-                    sub2tree = proto_item_add_subtree(sub2item, ett_nds);
+-                    ioffset += align_4(tvb, ioffset);
+-                    value3 = tvb_get_letohl(tvb, ioffset);  /* Attribute Name */
+-                    ioffset = ioffset + 4;
+-                    get_string(tvb, ioffset, value3, mval_buf.buffer);
+-                    values->vstring = mval_buf.buffer;
+-                    proto_tree_add_string(sub2tree, hf_nds_attribute_dn, tvb, ioffset,
+-                            value3, values->vstring);
+-                    ioffset = ioffset + value3;
++                case MVTYPE_PROCESS_ITERATOR: /* Process Iterator subverbs. */
++                        temp_values.vvalue = tvb_get_letohl(tvb, ioffset);
+ 
+-                    if(tvb_length_remaining(tvb, ioffset) < 4 )
+-                    {
+-                            break;
+-                    }
+-                }
+-                ioffset += align_4(tvb, ioffset);
+-                value4 = tvb_get_letohl(tvb, ioffset);
+-                values->vstring = (char *)match_strval(value4, iterator_subverbs);
+-                if(values->vstring == NULL)
+-                {
+-                        values->vstring = "(No Iteration Verb Found)";
+-                }
+-                ioffset += 4;
+-                dissect_nds_iterator(ntree, tvb, pinfo, value4, value5, ioffset, TRUE);
++			temp_values.vstring = (char *)match_strval(temp_values.vvalue, nds_info_type);
++			if(temp_values.vstring == NULL)
++			{
++				temp_values.vstring = "No Info Type Set";
++			}
++			/*g_strdup(value)*/
++			proto_tree_add_string(ntree, hf_nds_info_type, tvb, ioffset, 4, temp_values.vstring);
++			ioffset = ioffset + 4;
++			temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
++			value5 = tvb_get_letohl(tvb, ioffset);
++			temp_values.vdesc = "Information Flags (low) Byte:";
++			temp_values.vlength = 2;
++			temp_values.hfname = hf_nds_rflags;
++			temp_values.voffset = ioffset;
++			temp_values.bit1 = "Output Flags";
++			temp_values.bit1hfname = hf_bit1infoflagsl;
++			temp_values.bit2 = "Entry ID";
++			temp_values.bit2hfname = hf_bit2infoflagsl;
++			temp_values.bit3 = "Entry Flags";
++			temp_values.bit3hfname = hf_bit3infoflagsl;
++			temp_values.bit4 = "Subordinate Count";
++			temp_values.bit4hfname = hf_bit4infoflagsl;
++			temp_values.bit5 = "Modification Time";
++			temp_values.bit5hfname = hf_bit5infoflagsl;
++			temp_values.bit6 = "Modification Timestamp";
++			temp_values.bit6hfname = hf_bit6infoflagsl;
++			temp_values.bit7 = "Creation Timestamp";
++			temp_values.bit7hfname = hf_bit7infoflagsl;
++			temp_values.bit8 = "Partition Root ID";
++			temp_values.bit8hfname = hf_bit8infoflagsl;
++			temp_values.bit9 = "Parent ID";
++			temp_values.bit9hfname = hf_bit9infoflagsl;
++			temp_values.bit10 = "Revision Count";
++			temp_values.bit10hfname = hf_bit10infoflagsl;
++			temp_values.bit11 = "Replica Type";
++			temp_values.bit11hfname = hf_bit11infoflagsl;
++			temp_values.bit12 = "Base Class";
++			temp_values.bit12hfname = hf_bit12infoflagsl;
++			temp_values.bit13 = "Relative Distinguished Name";
++			temp_values.bit13hfname = hf_bit13infoflagsl;
++			temp_values.bit14 = "Distinguished Name";
++			temp_values.bit14hfname = hf_bit14infoflagsl;
++			temp_values.bit15 = "Root Distinguished Name";
++			temp_values.bit15hfname = hf_bit15infoflagsl;
++			temp_values.bit16 = "Parent Distinguished Name";
++			temp_values.bit16hfname = hf_bit16infoflagsl;
++			process_bitfield(ntree, tvb, &temp_values);
++			ioffset = ioffset+2;
++			temp_values.vvalue = tvb_get_letohs(tvb, ioffset);
++			temp_values.vtype = VTYPE_BITFIELD;
++			temp_values.vdesc = "Information Flags (high) Byte:";
++			temp_values.vlength = 2;
++			temp_values.hfname= hf_nds_rflags;
++			temp_values.voffset = ioffset;
++			temp_values.bit1 = "Purge Time";
++			temp_values.bit1hfname = hf_bit1infoflagsh;
++			temp_values.bit2 = "Dereference Base Class";
++			temp_values.bit2hfname = hf_bit2infoflagsh;
++			temp_values.bit3 = "Replica Number";
++			temp_values.bit3hfname = hf_bit3infoflagsh;
++			temp_values.bit4 = "Replica State";
++			temp_values.bit4hfname = hf_bit4infoflagsh;
++			temp_values.bit5 = "Federation Boundary";
++			temp_values.bit5hfname = hf_bit5infoflagsh;
++			temp_values.bit6 = "Schema Boundary";
++			temp_values.bit6hfname = hf_bit6infoflagsh;
++			temp_values.bit7 = "Federation Boundary ID";
++			temp_values.bit7hfname = hf_bit7infoflagsh;
++			temp_values.bit8 = "Schema Boundary ID";
++			temp_values.bit8hfname = hf_bit8infoflagsh;
++			temp_values.bit9 = "Current Subcount";
++			temp_values.bit9hfname = hf_bit9infoflagsh;
++			temp_values.bit10 = "Local Entry Flags";
++			temp_values.bit10hfname = hf_bit10infoflagsh;
++			temp_values.bit11 = "Not Defined";
++			temp_values.bit11hfname = hf_bit11infoflagsh;
++			temp_values.bit12 = "Not Defined";
++			temp_values.bit12hfname = hf_bit12infoflagsh;
++			temp_values.bit13 = "Not Defined";
++			temp_values.bit13hfname = hf_bit13infoflagsh;
++			temp_values.bit14 = "Not Defined";
++			temp_values.bit14hfname = hf_bit14infoflagsh;
++			temp_values.bit15 = "Not Defined";
++			temp_values.bit15hfname = hf_bit15infoflagsh;
++			temp_values.bit16 = "Not Defined";
++			temp_values.bit16hfname = hf_bit16infoflagsh;
++			ioffset = ioffset+2;
++			process_bitfield(ntree, tvb, &temp_values);
++			ioffset += 4;
++			proto_tree_add_item(ntree, hf_nds_time_filter, tvb, ioffset, 4, FALSE);
++			ioffset += 4;
++			proto_tree_add_item(ntree, hf_nds_all_attr, tvb, ioffset, 4, FALSE);
++			ioffset += 4;
++			value2 = tvb_get_letohl(tvb, ioffset);
++			sub1item = proto_tree_add_uint_format(ntree, hf_nds_number_of_items, tvb, ioffset,
++							      4, value2, "Number of Attributes %u", value2);
++			sub1tree = proto_item_add_subtree(sub1item, ett_nds);
++			ioffset += 4;
++			for (i=1; i<=value2; i++) {
++				sub2item = proto_tree_add_text(sub1tree, tvb, ioffset, 0, "Attribute %u", i);
++				sub2tree = proto_item_add_subtree(sub2item, ett_nds);
++				ioffset += align_4(tvb, ioffset);
++				value3 = tvb_get_letohl(tvb, ioffset);  /* Attribute Name */
++				ioffset = ioffset + 4;
++				values->vstring = get_string(tvb, ioffset, value3);
++				proto_tree_add_string(sub2tree, hf_nds_attribute_dn, tvb, ioffset,
++						      value3, values->vstring);
++				ioffset = ioffset + value3;
+ 
+-                g_strlcpy(mval_buf.buffer, " (", 1024);
+-                g_strlcat(mval_buf.buffer, values->vstring, 1024);
+-                g_strlcat(mval_buf.buffer, ") ", 1024);
+-                values->vstring = mval_buf.buffer;
+-                break;
+-            default:
+-                        break;
++				if(tvb_length_remaining(tvb, ioffset) < 4 )
++				{
++					break;
++				}
++			}
++			ioffset += align_4(tvb, ioffset);
++			value4 = tvb_get_letohl(tvb, ioffset);
++			values->vstring = (char *)match_strval(value4, iterator_subverbs);
++			if(values->vstring == NULL)
++			{
++				values->vstring = "(No Iteration Verb Found)";
++			}
++			ioffset += 4;
++			dissect_nds_iterator(ntree, tvb, pinfo, value4, value5, ioffset, TRUE);
++
++			values->vstring = ep_strdup_printf("(%s)", values->vstring);
++			break;
++
++                default:
++		        break;
+         }
+ }
+ 
+-static void dissect_ncp_89_6_request(tvbuff_t *tvb, proto_tree *volatile ncp_tree, guint32 offset)
++static void
++dissect_ncp_89_6_request(tvbuff_t *tvb, proto_tree *volatile ncp_tree, guint32 offset)
+ {
+     guint32 string_len, datatype, count, i;
+ 
+@@ -6804,7 +6792,7 @@
+         offset += string_len;
+         if(tvb_length_remaining(tvb, offset) < 4 )
+         {
+-                break;
++            break;
+         }
+     }
+ }
+@@ -6844,7 +6832,7 @@
+     loffset = 40;
+     for (x = 1; x <= number_of_items; x++)
+     {
+-        aitem = proto_tree_add_text(ncp_tree, tvb, loffset, -1, "Network Address - %d", x);
++        aitem = proto_tree_add_text(ncp_tree, tvb, loffset, -1, "Network Address - %u", x);
+         atree = proto_item_add_subtree(aitem, ett_ncp);
+ 
+         addr_type = tvb_get_guint8(tvb, loffset);
+@@ -6856,33 +6844,33 @@
+ 
+         switch (addr_type)
+         {
+-                case 1:
+-                    proto_tree_add_item(atree, hf_nds_net, tvb, loffset, 4, FALSE);
+-                    proto_tree_add_item(atree, hf_nds_node, tvb, loffset+4, 6, FALSE);
+-                    proto_tree_add_item(atree, hf_nds_socket, tvb, loffset+10, 2, FALSE);
+-                    loffset += 12;
+-                    break;
+-                case 5:
+-                    proto_tree_add_item(atree, hf_nds_port, tvb, loffset, 2, FALSE);
+-                    proto_tree_add_item(atree, hf_add_ref_udp, tvb, loffset+2, 4, FALSE);
+-                    loffset += 6;
+-                    break;
+-                case 6:
+-                    proto_tree_add_item(atree, hf_nds_port, tvb, loffset, 2, FALSE);
+-                    proto_tree_add_item(atree, hf_add_ref_tcp, tvb, loffset+2, 4, FALSE);
+-                    loffset += 6;
+-                    break;
+-                default:
+-                    proto_tree_add_text(atree, tvb, loffset, -1, "Unknown Address Type");
+-                    /* unknown type so read the length field and then
+-                    * just skip the record and move on to the next */
+-                    loffset += tvb_get_letohl(tvb, loffset - 4);
+-                    break;
++	    case 1:
++		proto_tree_add_item(atree, hf_nds_net, tvb, loffset, 4, FALSE);
++		proto_tree_add_item(atree, hf_nds_node, tvb, loffset+4, 6, FALSE);
++		proto_tree_add_item(atree, hf_nds_socket, tvb, loffset+10, 2, FALSE);
++		loffset += 12;
++		break;
++	    case 5:
++		proto_tree_add_item(atree, hf_nds_port, tvb, loffset, 2, FALSE);
++		proto_tree_add_item(atree, hf_add_ref_udp, tvb, loffset+2, 4, FALSE);
++		loffset += 6;
++		break;
++	    case 6:
++		proto_tree_add_item(atree, hf_nds_port, tvb, loffset, 2, FALSE);
++		proto_tree_add_item(atree, hf_add_ref_tcp, tvb, loffset+2, 4, FALSE);
++		loffset += 6;
++		break;
++	    default:
++		proto_tree_add_text(atree, tvb, loffset, -1, "Unknown Address Type");
++		/* unknown type so read the length field and then
++		 * just skip the record and move on to the next */
++		loffset += tvb_get_letohl(tvb, loffset - 4);
++		break;
+         }
+         proto_item_set_end(aitem, tvb, loffset);
+         if(tvb_length_remaining(tvb, loffset) < 4 )
+         {
+-                break;
++            break;
+         }
+     }
+ }
+@@ -6911,11 +6899,11 @@
+ dissect_ncp_8x20reply(tvbuff_t *tvb, proto_tree *volatile ncp_tree,
+                       const ncp_record	*ncp_rec, ncp_req_hash_value *request_value)
+ {
+-    guint16 x;
+-    guint32 loffset, number_of_items, str_length;
+-	ptvcursor_t			*ptvc = NULL;
+-    proto_tree              *atree, *btree;
+-    proto_item              *aitem, *bitem;
++    guint16             x;
++    guint32             loffset, number_of_items, str_length;
++    ptvcursor_t	        *ptvc = NULL;
++    proto_tree          *atree, *btree;
++    proto_item          *aitem, *bitem;
+ 
+     aitem = proto_tree_add_text(ncp_tree, tvb, 8, 9, "Search Sequence:");
+     atree = proto_item_add_subtree(aitem, ett_ncp);
+@@ -6930,7 +6918,7 @@
+     loffset = 20;
+     for (x = 1; x <= number_of_items; x++ )
+     {
+-        aitem = proto_tree_add_text(ncp_tree, tvb, loffset, -1, "Information Item %d", x);
++        aitem = proto_tree_add_text(ncp_tree, tvb, loffset, -1, "Information Item %u", x);
+         atree = proto_item_add_subtree(aitem, ett_ncp);
+         /* Data Stream Space Allocated */
+         if (request_value->req_mask & 0x0002) {
+@@ -7249,24 +7237,26 @@
+     char value_format[2]="\0";
+     char param_string[256]="\0";
+ 
+-    build_expert_data(ncp_tree, "ncp.set_cmd_type", value_format, 0, FALSE);
+-    build_expert_data(ncp_tree, "ncp.set_cmd_name", param_string, 0, FALSE);
++    build_expert_data(ncp_tree, "ncp.set_cmd_type",
++                      value_format, sizeof value_format, 0, FALSE);
++    build_expert_data(ncp_tree, "ncp.set_cmd_name",
++                      param_string, sizeof param_string, 0, FALSE);
+     switch (atoi(value_format)) {
+-    case 0:   /* { 0x00,	"Numeric Value" }, */
+-    case 2:   /* { 0x02,	"Ticks Value" }, */
+-    case 4:   /* { 0x04,	"Time Value" }, */
+-    case 6:   /* { 0x06,	"Trigger Value" }, */
+-    case 7:   /* { 0x07,	"Numeric Value" }, */
+-        proto_tree_add_item(ncp_tree, hf_srvr_param_number, tvb, 37+strlen(param_string), 4, TRUE);
+-        break;
+-    case 1:   /* { 0x01,	"Boolean Value" }, */
+-        proto_tree_add_item(ncp_tree, hf_srvr_param_boolean, tvb, 37+strlen(param_string), 1, TRUE);
+-        break;
+-    case 5:   /* { 0x05,	"String Value" }, */
+-        proto_tree_add_item(ncp_tree, hf_srvr_param_string, tvb, 37+strlen(param_string), -1, TRUE);
+-        break;
+-    default:
+-        break;
++	case 0:   /* { 0x00,	"Numeric Value" }, */
++	case 2:   /* { 0x02,	"Ticks Value" },   */
++	case 4:   /* { 0x04,	"Time Value" },    */
++	case 6:   /* { 0x06,	"Trigger Value" }, */
++	case 7:   /* { 0x07,	"Numeric Value" }, */
++	    proto_tree_add_item(ncp_tree, hf_srvr_param_number, tvb, 37+strlen(param_string), 4, TRUE);
++	    break;
++	case 1:   /* { 0x01,	"Boolean Value" }, */
++	    proto_tree_add_item(ncp_tree, hf_srvr_param_boolean, tvb, 37+strlen(param_string), 1, TRUE);
++	    break;
++	case 5:   /* { 0x05,	"String Value" },  */
++	    proto_tree_add_item(ncp_tree, hf_srvr_param_string, tvb, 37+strlen(param_string), -1, TRUE);
++	    break;
++	default:
++	    break;
+     }
+ }
+ 
+@@ -7289,7 +7279,7 @@
+  * the last fragment packet number.
+  *
+  * Also the NDS dissection requires the values of NDS Verb, Version, and Flags.
+- * Without this values being remembered from the first request packet then
++ * Without these values being remembered from the first request packet then
+  * we will be unable to dissect the reply packet. For this reason we remember
+  * these values on the first fragment and then populate the values in the final
+  * fragment. We only do this on the first dissection.
+@@ -7298,7 +7288,7 @@
+ nds_defrag(tvbuff_t *tvb, packet_info *pinfo, guint32 nw_connection, guint8 sequence, guint16 type, proto_tree *tree, struct novell_tap *ncp_tap)
+ {
+     int                 i, frag_count=0;
+-    guint		        len=0;
++    guint		len=0;
+     guint32             tid = 1;
+     tvbuff_t            *frag_tvb = NULL;
+     fragment_data       *fd_head;
+@@ -7308,8 +7298,8 @@
+ 
+     for (i = 0; i < 99; i++) {
+         if (!frags[i].nds_fragmented)
+-	{
+-                frags[i].nds_frag = 0xfffffff0;
++	    {
++	    frags[i].nds_frag = 0xfffffff0;
+         }
+     }
+     /* Check to see if defragmentation is enabeled in the dissector */
+@@ -7321,23 +7311,23 @@
+     if (!pinfo->fd->flags.visited) {
+       	/* Find the conversation whence the request would have come. */
+        	conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst,
+-       		    PT_NCP, nw_connection, nw_connection, 0);
++					 PT_NCP, nw_connection, nw_connection, 0);
+        	if (conversation != NULL) {
+-       		/* find the record telling us the request made that caused
+-       		   this reply */
+-       		request_value = ncp_hash_lookup(conversation, sequence);
+-       		if (!request_value) {
+-                        dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
+-                        return;
+-                }
+-       		p_add_proto_data(pinfo->fd, proto_ncp, (void*) request_value);
++            /* find the record telling us the request made that caused
++               this reply */
++            request_value = ncp_hash_lookup(conversation, sequence);
++            if (!request_value) {
++                dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
++                return;
++            }
++            p_add_proto_data(pinfo->fd, proto_ncp, (void*) request_value);
+        	}
+        	/* else... we haven't seen an NCP Request for that conversation and sequence. */
+         else
+-        {
++            {
+                 dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
+                 return;
+-        }
++            }
+     }
+     else {
+        	request_value = p_get_proto_data(pinfo->fd, proto_ncp);
+@@ -7349,7 +7339,7 @@
+     /* Validate that this is an NDS packet */
+     /* If this isn't an NDS packet then just return */
+     if (!request_value->ncp_rec ||
+-         request_value->ncp_rec->func!=104 || request_value->ncp_rec->subfunc!=2) {
++        request_value->ncp_rec->func!=104 || request_value->ncp_rec->subfunc!=2) {
+         dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
+         return;
+     }
+@@ -7367,13 +7357,14 @@
+     {
+         if (frags[i].nds_frag == nds_frag || frags[i].nds_frag == 0xfffffff0)
+         {
+-                if (frags[i].nds_frag == 0xfffffff0)
++            if (frags[i].nds_frag == 0xfffffff0)
+                 {
+-                        frags[i].nds_length = 0;
+-                        frags[i].nds_frag = nds_frag;
+-                        frags[i].nds_fragmented = TRUE;
++                    frags[i].nds_length = 0;
++                    frags[i].nds_frag = nds_frag;
++                    frags[i].nds_fragmented = TRUE;
++                    frags[i].sequence = 0;
+                 }
+-                break;
++            break;
+         }
+     }
+     if (i > 99)
+@@ -7384,8 +7375,8 @@
+     /* is this the end of an existing fragment or just another reply */
+     if (nds_frag == 0xffffffff && request_value->nds_frag_num == 0xffffffff)
+     {
+-                dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
+-                return;
++        dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
++        return;
+     }
+ 
+     /* Now we process the fragments */
+@@ -7393,16 +7384,16 @@
+     {
+         /* Check to see of this is a fragment. If so then mark as a fragment. */
+         if (frags[frag_count].nds_frag==0xffffffff) {
+-                request_value->nds_frag = FALSE;
+-                /* nds_length of 0 means start of fragment */
+-                frags[frag_count].nds_length = 0;
++            request_value->nds_frag = FALSE;
++            /* nds_length of 0 means start of fragment */
++            frags[frag_count].nds_length = 0;
+         }
+         else
+         {
+-                if (frags[frag_count].nds_length == 0)
+-                {
+-                        frags[frag_count].nds_length = tvb_get_letohl(tvb, 0);
+-                }
++            if (frags[frag_count].nds_length == 0)
++            {
++                frags[frag_count].nds_length = tvb_get_letohl(tvb, 0);
++            }
+         }
+         /*
+          * Fragment
+@@ -7420,13 +7411,33 @@
+                 frags[frag_count].nds_frag_flags = request_value->req_nds_flags;
+                 frags[frag_count].nds_frag_prot_flags = request_value->req_nds_prot_flags;
+                 fd_head = fragment_add_seq_next(tvb, 0, pinfo, tid, nds_fragment_table, nds_reassembled_table, len, request_value->nds_frag);
++                frags[frag_count].sequence = sequence;
+                 frags[frag_count].nds_length = 1;
+             }
+             else
+             {
+                 /* Subsequent fragments should be offset by 16 since we do not need */
+                 /* the additional fragment handle and size fields in our composite data */
+-                fd_head = fragment_add_seq_next(tvb, 16, pinfo, tid, nds_fragment_table, nds_reassembled_table, len-16, request_value->nds_frag);
++                /* Also do not add retransmitted packets, just mark and return */
++                if (!pinfo->fd->flags.visited)
++                {
++                    if (sequence != frags[frag_count].sequence) {
++                        fd_head = fragment_add_seq_next(tvb, 16, pinfo, tid, nds_fragment_table, nds_reassembled_table, len-16, request_value->nds_frag);
++                        frags[frag_count].sequence = sequence;
++                    }
++                    else
++                    {
++                        if (check_col(pinfo->cinfo, COL_INFO)) {
++                            col_add_fstr(pinfo->cinfo, COL_INFO, "[Retransmitted NDS Fragment 0x%08x]", frags[frag_count].nds_frag);
++                        }
++                        return;
++                    }
++                }
++                else
++                {
++                    fd_head = fragment_add_seq_next(tvb, 16, pinfo, tid, nds_fragment_table, nds_reassembled_table, len-16, request_value->nds_frag);
++                    frags[frag_count].sequence = sequence;
++                }
+             }
+             if (fd_head != NULL)
+             {
+@@ -7434,43 +7445,43 @@
+                 if (fd_head->next != NULL && !request_value->nds_frag)
+                 {
+                     frag_tvb = tvb_new_real_data(fd_head->data,
+-                        fd_head->len, fd_head->len);
++                                                 fd_head->len, fd_head->len);
+                     tvb_set_child_real_data_tvbuff(tvb,
+-                        frag_tvb);
++                                                   frag_tvb);
+                     add_new_data_source(pinfo,
+-                        frag_tvb,
+-                        "Reassembled NDS");
++                                        frag_tvb,
++                                        "Reassembled NDS");
+                     /* Show all fragments. */
+                     if (tree)
+                     {
+                         proto_item *frag_tree_item;
+                         show_fragment_seq_tree(fd_head,
+-                            &nds_frag_items,
+-                            tree, pinfo,
+-                            frag_tvb, &frag_tree_item);
++                                               &nds_frag_items,
++                                               tree, pinfo,
++                                               frag_tvb, &frag_tree_item);
+                         tid++;
+                     }
+ 
+                     if (!pinfo->fd->flags.visited)
+                     {
+-                         /* Now we need to find the original fragment number. */
+-                         /* Get the fragment flag */
+-                         nds_frag = tvb_get_letohl(frag_tvb, 12);
+-                         for (i=0; i<100; i++)
+-                         {
+-                             if (frags[i].nds_frag == nds_frag)
+-                             {
+-                                     break;
+-                             }
+-                         }
+-                         if (i > 99)
+-                             return;
+-                         if (frags[i].nds_frag == 0xffffffff)
+-                         {
+-                                 /* Error can't find fragment */
+-                                 /*DISSECTOR_ASSERT(0);*/
+-                         }
+-                         frag_count = i;
++                        /* Now we need to find the original fragment number. */
++                        /* Get the fragment flag */
++                        nds_frag = tvb_get_letohl(frag_tvb, 12);
++                        for (i=0; i<100; i++)
++                        {
++                            if (frags[i].nds_frag == nds_frag)
++                            {
++                                break;
++                            }
++                        }
++                        if (i > 99)
++                            return;
++                        if (frags[i].nds_frag == 0xffffffff)
++                        {
++                            /* Error can't find fragment */
++                            /*DISSECTOR_ASSERT(0);*/
++                        }
++                        frag_count = i;
+                         /* Remember this fragment information so we can dissect.
+                          * Only do this on the first dissection. After the first
+                          * dissection we will just read the memory values.
+@@ -7491,7 +7502,7 @@
+                     {
+                       if (request_value->nds_frag)
+                       {
+-                        col_add_fstr(pinfo->cinfo, COL_INFO, "[NDS Fragment %08x]", frags[frag_count].nds_frag);
++                        col_add_fstr(pinfo->cinfo, COL_INFO, "[NDS Fragment 0x%08x]", frags[frag_count].nds_frag);
+                       }
+                     }
+                 }
+@@ -7503,7 +7514,7 @@
+                 {
+                   if (request_value->nds_frag)
+                   {
+-                     col_add_fstr(pinfo->cinfo, COL_INFO, "[NDS Fragment %08x]", frags[frag_count].nds_frag);
++                     col_add_fstr(pinfo->cinfo, COL_INFO, "[NDS Fragment 0x%08x]", frags[frag_count].nds_frag);
+                   }
+                 }
+                 frag_tvb = NULL;
+@@ -7519,9 +7530,9 @@
+         if (frag_tvb == NULL)
+         {
+             /* This is a fragment packet */
+-                frag_tvb = tvb_new_subset (tvb, 0, -1, -1);
+-	        nds_data_handle = find_dissector("data");
+-                call_dissector(nds_data_handle, frag_tvb, pinfo, tree);
++            frag_tvb = tvb_new_subset (tvb, 0, -1, -1);
++            nds_data_handle = find_dissector("data");
++            call_dissector(nds_data_handle, frag_tvb, pinfo, tree);
+         }
+         else
+         {
+@@ -7535,9 +7546,17 @@
+     else
+     {
+         /* This is not any fragment packet */
+-        frags[frag_count].nds_length = 0;
+         request_value->nds_frag = FALSE;
+-        dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
++        /* Trap for retransmitted end fragment */
++        if (request_value->nds_end_frag < pinfo->fd->num) {
++            if (check_col(pinfo->cinfo, COL_INFO)) {
++                col_add_fstr(pinfo->cinfo, COL_INFO, "[Retransmitted end of NDS Fragment 0x%08x, see packet #%d for details.]", request_value->nds_frag_num, request_value->nds_end_frag);
++            }
++        }
++        else
++        { 
++            dissect_ncp_reply(tvb, pinfo, nw_connection, sequence, type, tree, ncp_tap);
++        }
+     }
+ }
+ 
+@@ -7546,7 +7565,7 @@
+ 		guint32 nw_connection, guint8 sequence,
+ 		guint16 type, proto_tree *volatile ncp_tree)
+ {
+-	volatile guint8			func=0;
++	volatile guint8		func=0;
+ 	volatile guint8		subfunc = 0;
+ 	gboolean		requires_subfunc = FALSE;
+ 	gboolean		has_length = FALSE;
+@@ -7576,22 +7595,22 @@
+                                 }
+                                 else
+                                 {
+-        			                ncp_rec = &ncp1111_request;
+-                                    if (ncp_echo_conn) {
+-                                        expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Connection Request");
+-                                    }
++                                        ncp_rec = &ncp1111_request;
++                                        if (ncp_echo_conn) {
++                                                expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Connection Request");
++                                        }
+                                 }
+                         }
+                         else
+                         {
+-        			        ncp_rec = &ncp1111_request;
++                            ncp_rec = &ncp1111_request;
+                             if (ncp_echo_conn) {
+-                                expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Connection Request");
++                                    expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Connection Request");
+                             }
+                         }
+ 			break;
+ 		case NCP_SERVICE_REQUEST:
+-            func = tvb_get_guint8(tvb, 6);
++                        func = tvb_get_guint8(tvb, 6);
+ 			requires_subfunc = ncp_requires_subfunc(func);
+ 			has_length = ncp_has_length_parameter(func);
+ 			if (requires_subfunc) {
+@@ -7606,9 +7625,9 @@
+ 			break;
+ 		case NCP_DEALLOCATE_SLOT:
+ 			ncp_rec = &ncp5555_request;
+-            if (ncp_echo_conn) {
+-                expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Destroy Connection %d Request", nw_connection);
+-            }
++                        if (ncp_echo_conn) {
++                               expert_add_info_format(pinfo, NULL, PI_RESPONSE_CODE, PI_CHAT, "Destroy Connection %u Request", nw_connection);
++                        }
+ 			break;
+ 		case NCP_BROADCAST_SLOT:
+ 			ncp_rec = &ncpbbbb_request;
+@@ -7636,13 +7655,13 @@
+         			col_add_fstr(pinfo->cinfo, COL_INFO,
+         				"C Unknown Function %u %u (0x%02X/0x%02x)",
+         				func, subfunc, func, subfunc);
+-                    return;
++                                return;
+         		}
+         		else {
+         			col_add_fstr(pinfo->cinfo, COL_INFO,
+         				"C Unknown Function %u (0x%02x)",
+         				func, func);
+-                    return;
++                                return;
+         		}
+         	}
+         }
+@@ -7744,21 +7763,21 @@
+ 				; /* nothing */
+ 				break;
+ 		}
+-        if (request_value) {
+-            request_value->length = 0;
+-        }
++                if (request_value) {
++                        request_value->length = 0;
++                }
+ 		if (requires_subfunc) {
+ 			if (has_length) {
+-                if (request_value && func==123) {
+-                    request_value->length = tvb_get_ntohs(tvb, 7);
+-                }
+-				proto_tree_add_item(ncp_tree, hf_ncp_length, tvb, 7,
++                                if (request_value && func==123) {
++                                        request_value->length = tvb_get_ntohs(tvb, 7);
++                                }
++		                proto_tree_add_item(ncp_tree, hf_ncp_length, tvb, 7,
+ 					2, FALSE);
+-                proto_tree_add_uint_format(ncp_tree, hf_ncp_subfunc, tvb, 9, 1,
++                                proto_tree_add_uint_format(ncp_tree, hf_ncp_subfunc, tvb, 9, 1,
+ 					subfunc, "SubFunction: %u (0x%02x)",
+ 					subfunc, subfunc);
+-				ptvc = ptvcursor_new(ncp_tree, tvb, 10);
+-			}
++		                ptvc = ptvcursor_new(ncp_tree, tvb, 10);
++	                 }
+ 			else {
+ 				proto_tree_add_uint_format(ncp_tree, hf_ncp_subfunc, tvb, 7, 1,
+ 					subfunc, "SubFunction: %u (0x%02x)",
+@@ -7773,7 +7792,7 @@
+         /* The group is not part of the packet, but it's useful
+ 		 * information to display anyway. Put it in the tree for filtering and tap use*/
+ 		if (ncp_rec) {
+-	        proto_tree_add_uint_format(ncp_tree, hf_ncp_group, tvb, 0, 0, ncp_rec->group, "Group: %s", ncp_groups[ncp_rec->group]);
++	                proto_tree_add_uint_format(ncp_tree, hf_ncp_group, tvb, 0, 0, ncp_rec->group, "Group: %s", ncp_groups[ncp_rec->group]);
+ 		}
+ 
+                 except_code = 0;
+@@ -7936,24 +7955,27 @@
+                                 }
+ 			}
+ 		}
+-        /* Store NCP request specific flags for manual dissection */
+-        if ((func == 0x57 || func == 0x59) && subfunc == 0x14 && ncp_tree && request_value) {
+-            char ret_info_string[16];
+-            char ret_info_string_ext[16];
++                /* Store NCP request specific flags for manual dissection */
++                if ((func == 0x57 || func == 0x59) && subfunc == 0x14 && ncp_tree && request_value) {
++                        char ret_info_string[16];
++                        char ret_info_string_ext[16];
+ 
+-            build_expert_data(ncp_tree, "ncp.ret_info_mask", ret_info_string, 0, FALSE);
+-            request_value->req_mask = atoi(ret_info_string);
+-            build_expert_data(ncp_tree, "ncp.ext_info", ret_info_string_ext, 0, FALSE);
+-            request_value->req_mask_ext = atoi(ret_info_string_ext);
+-        }
+-        /* NCP function 89/6 passes either ASCII or UTF8 data */
+-        /* Decode manually since it is not possible to SREC the request */
+-        /* packets from the python code */
+-        if (func == 0x59 && subfunc == 0x6) {
+-            dissect_ncp_89_6_request(tvb, ncp_tree, 22);
+-        }
+-        /* Check to see if we need to report to the expert table */
+-        trap_for_expert_event(ncp_tree, pinfo, ncp_rec, 0);
++                        build_expert_data(ncp_tree, "ncp.ret_info_mask",
++                              ret_info_string, sizeof ret_info_string, 0, FALSE);
++                        request_value->req_mask = atoi(ret_info_string);
++                        build_expert_data(ncp_tree, "ncp.ext_info",
++                              ret_info_string_ext, sizeof ret_info_string_ext,
++                              0, FALSE);
++                        request_value->req_mask_ext = atoi(ret_info_string_ext);
++                }
++                /* NCP function 89/6 passes either ASCII or UTF8 data */
++                /* Decode manually since it is not possible to SREC the request */
++                /* packets from the python code */
++                if (func == 0x59 && subfunc == 0x6) {
++                        dissect_ncp_89_6_request(tvb, ncp_tree, 22);
++                }
++                /* Check to see if we need to report to the expert table */
++                trap_for_expert_event(ncp_tree, pinfo, ncp_rec, 0);
+ 		/* Free the temporary proto_tree */
+ 		CLEANUP_CALL_AND_POP;
+ 
+@@ -7967,18 +7989,16 @@
+ dissect_nds_ping_reply(tvbuff_t *tvb, packet_info *pinfo _U_,
+ 	proto_tree *ncp_tree, ncp_req_hash_value *request_value)
+ {
+-        nw_uni_t                        reply_buffer;
++        char *                          reply_buffer;
+         guint8                          ping_version;
+         guint32                         nds_string_len;
+         guint32                         nds_offset;
+         guint32                         bvalue;
+         guint32                         nds_flags;
+-    	nds_val         				pvalues[9];
+-	    int             				i;
++        nds_val                         pvalues[9];
++        int                             i;
+         nstime_t                        ns;
+ 
+-	reply_buffer.buffer[0] = '\0';
+-
+         ping_version = tvb_get_guint8(tvb, 8);
+         proto_tree_add_item(ncp_tree, hf_ping_version, tvb, 8, 1, TRUE);
+         if (ping_version == 9) {
+@@ -8224,9 +8244,9 @@
+                                                 }
+                                                 nds_string_len = tvb_get_letohl(tvb, nds_offset);
+                                                 nds_offset += 4;
+-                                                get_string(tvb, nds_offset, nds_string_len, reply_buffer.buffer);
++                                                reply_buffer = get_string(tvb, nds_offset, nds_string_len);
+                                                 tvb_ensure_bytes_exist(tvb, nds_offset, nds_string_len);
+-                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "SAP Name: %s", reply_buffer.buffer);
++                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "SAP Name: %s", reply_buffer);
+                                                 nds_offset += nds_string_len;
+                                                 nds_offset += align_4(tvb, nds_offset);
+                                                 break;
+@@ -8237,9 +8257,9 @@
+                                                 }
+                                                 nds_string_len = tvb_get_letohl(tvb, nds_offset);
+                                                 nds_offset += 4;
+-                                                get_string(tvb, nds_offset, nds_string_len, reply_buffer.buffer);
++                                                reply_buffer = get_string(tvb, nds_offset, nds_string_len);
+                                                 tvb_ensure_bytes_exist(tvb, nds_offset, nds_string_len);
+-                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "NDS Tree Name: %s", reply_buffer.buffer);
++                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "NDS Tree Name: %s", reply_buffer);
+                                                 nds_offset += nds_string_len;
+                                                 nds_offset += align_4(tvb, nds_offset);
+                                                 break;
+@@ -8250,9 +8270,9 @@
+                                                 }
+                                                 nds_string_len = tvb_get_letohl(tvb, nds_offset);
+                                                 nds_offset += 4;
+-                                                get_string(tvb, nds_offset, nds_string_len, reply_buffer.buffer);
++                                                reply_buffer = get_string(tvb, nds_offset, nds_string_len);
+                                                 tvb_ensure_bytes_exist(tvb, nds_offset, nds_string_len);
+-                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "OS Name: %s", reply_buffer.buffer);
++                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "OS Name: %s", reply_buffer);
+                                                 nds_offset += nds_string_len;
+                                                 nds_offset += align_4(tvb, nds_offset);
+                                                 break;
+@@ -8263,9 +8283,9 @@
+                                                 }
+                                                 nds_string_len = tvb_get_letohl(tvb, nds_offset);
+                                                 nds_offset += 4;
+-                                                get_string(tvb, nds_offset, nds_string_len, reply_buffer.buffer);
++                                                reply_buffer = get_string(tvb, nds_offset, nds_string_len);
+                                                 tvb_ensure_bytes_exist(tvb, nds_offset, nds_string_len);
+-                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "Hardware Name: %s", reply_buffer.buffer);
++                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "Hardware Name: %s", reply_buffer);
+                                                 nds_offset += nds_string_len;
+                                                 nds_offset += align_4(tvb, nds_offset);
+                                                 break;
+@@ -8276,9 +8296,9 @@
+                                                 }
+                                                 nds_string_len = tvb_get_letohl(tvb, nds_offset);
+                                                 nds_offset += 4;
+-                                                get_string(tvb, nds_offset, nds_string_len, reply_buffer.buffer);
++                                                reply_buffer = get_string(tvb, nds_offset, nds_string_len);
+                                                 tvb_ensure_bytes_exist(tvb, nds_offset, nds_string_len);
+-                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "Vendor Name: %s", reply_buffer.buffer);
++                                                proto_tree_add_text(ncp_tree, tvb, nds_offset, nds_string_len, "Vendor Name: %s", reply_buffer);
+                                                 nds_offset += nds_string_len;
+                                                 nds_offset += align_4(tvb, nds_offset);
+                                                 break;
+@@ -8302,13 +8322,12 @@
+         guint32                         nds_frag;
+         const char                      *verb_string;
+         nds_val                         pvalues[9];
+-        char                            string_buffer[9][1024];
+         gboolean                        resolve_eid=FALSE;
+         guint32                         global_eid=0;
+         gboolean                        add_eid = FALSE;
+         char                            global_object_name[256];
+-        ncp_req_eid_hash_value		    *request_eid_value = NULL;
+-        int				                i;
++        ncp_req_eid_hash_value          *request_eid_value = NULL;
++        int                             i;
+ 
+         global_object_name[0] = '\0';
+ 
+@@ -8340,159 +8359,158 @@
+         }
+         if (request_value && nds_error_code == 0x00000000)
+         {
+-            nds_offset = 20;
+-            for (i = 0; i < 9; i++) {
++                nds_offset = 20;
++                for (i = 0; i < 9; i++) {
+ 		    	pvalues[i].vtype = 0;
+-			    pvalues[i].vvalue = 0;
+-			    pvalues[i].vlength = 0;
+-			    pvalues[i].voffset = 0;
+-			    pvalues[i].hfname = 0;
+-			    pvalues[i].vdesc = "";
+-			    string_buffer[i][0] = '\0';
+-			    pvalues[i].vstring = string_buffer[i];
+-			    pvalues[i].mvtype = 0;
+-		    }
+-            verb_string = val_to_str(request_value->nds_request_verb,
+-                    ncp_nds_verb_vals, "Continuation Fragment");
+-            if(request_value->req_nds_prot_flags & 0x4000)
+-            {
+-                /* CRC is included in the NDS header so justify the offset */
+-                proto_tree_add_item(ncp_tree, hf_nds_crc, tvb, nds_offset, 4, TRUE);
+-                nds_offset += 4;
+-            }
+-            switch (request_value->nds_request_verb)
++                        pvalues[i].vvalue = 0;
++                        pvalues[i].vlength = 0;
++                        pvalues[i].voffset = 0;
++                        pvalues[i].hfname = 0;
++                        pvalues[i].vdesc = "";
++                        pvalues[i].vstring = NULL;
++                        pvalues[i].mvtype = 0;
++                }
++                verb_string = val_to_str(request_value->nds_request_verb,
++                                         ncp_nds_verb_vals, "Continuation Fragment");
++                if(request_value->req_nds_prot_flags & 0x4000)
++                {
++                        /* CRC is included in the NDS header so justify the offset */
++                        proto_tree_add_item(ncp_tree, hf_nds_crc, tvb, nds_offset, 4, TRUE);
++                        nds_offset += 4;
++                }
++                switch (request_value->nds_request_verb)
+                 {
+                         case 0x01:
+-                                        pvalues[0].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                        pvalues[0].vstring = (char *)match_strval(pvalues[0].vvalue, nds_tags);
+-                                        if(pvalues[0].vstring == NULL)
+-                                        {
+-                                                pvalues[0].vstring = "No Tags Set";
+-                                        }
+-                                        pvalues[0].vtype = VTYPE_STRING;
+-                                        pvalues[0].vdesc = "Tag: %s";
+-                                        pvalues[0].vlength = 4;
+-                                        pvalues[0].voffset = nds_offset;
+-                                        pvalues[0].hfname = hf_nds_tag_string;
+-                                        nds_offset = nds_offset+pvalues[0].vlength;
+-                                        switch(pvalues[0].vvalue)
+-                                        {
+-                                                case NDS_TAG_NO_SUCH_ENTRY:
+-                                                        break;
+-                                                case NDS_TAG_LOCAL_ENTRY:
+-                                                        pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[1].vtype = VTYPE_UINT32;
+-                                                        pvalues[1].vdesc = "Entry ID: 0x%08x";
+-                                                        add_eid = TRUE;
+-                                                        resolve_eid = TRUE;
+-                                                        g_strlcpy(global_object_name, request_value->object_name, 256);
+-                                                        global_eid = pvalues[1].vvalue;
+-                                                        pvalues[1].vlength = 4;
+-                                                        pvalues[1].voffset = nds_offset;
+-                                                        pvalues[1].hfname = hf_nds_eid;
+-                                                        nds_offset = nds_offset+pvalues[1].vlength;
+-                                                        pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                                        pvalues[2].vdesc = "Referral Records: %u";
+-                                                        pvalues[2].vlength = 4;
+-                                                        pvalues[2].voffset = nds_offset;
+-                                                        pvalues[2].hfname = hf_nds_referrals;
+-                                                        pvalues[2].mvtype = MVTYPE_LOC_ADDR_REFERRAL_REPLY;
+-                                                        break;
+-                                                case NDS_TAG_REMOTE_ENTRY:
+-                                                        nds_offset += 4;   /* GUINT32 reserved field */
+-                                                        pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[1].vtype = VTYPE_UINT32;
+-                                                        pvalues[1].vdesc = "Entry ID: 0x%08x";
+-                                                        pvalues[1].vlength = 4;
+-                                                        pvalues[1].voffset = nds_offset;
+-                                                        pvalues[1].hfname = hf_nds_eid;
+-                                                        nds_offset = nds_offset+pvalues[1].vlength;
+-                                                        pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                                        pvalues[2].vdesc = "Referral Records: %u";
+-                                                        pvalues[2].vlength = 4;
+-                                                        pvalues[2].voffset = nds_offset;
+-                                                        pvalues[2].hfname = hf_nds_referrals;
+-                                                        pvalues[2].mvtype = MVTYPE_LOC_ADDR_REFERRAL_REPLY;
+-                                                        break;
+-                                                case NDS_TAG_ALIAS_ENTRY:
+-                                                        pvalues[1].vtype = VTYPE_STRING;
+-                                                        pvalues[1].vdesc = "Alias Name: %s";
+-                                                        pvalues[1].mvtype = MVTYPE_ATTR_REQUEST;
+-                                                        pvalues[1].vvalue = 0;
+-                                                        pvalues[1].vlength = 256;
+-                                                        pvalues[1].vlength = tvb_get_letohl(tvb, nds_offset);
+-                                                        if (pvalues[1].vlength == 0x00)
+-                                                        {
+-                                                                pvalues[1].vtype = VTYPE_NONE;
+-                                                                break;
+-                                                        }
+-                                                        pvalues[1].voffset = nds_offset+4;
+-                                                        nds_offset += 4;
+-                                                        get_string(tvb, pvalues[1].voffset, pvalues[1].vlength, pvalues[1].vstring);
+-                                                        nds_offset += pvalues[1].vlength;
+-                                                        nds_offset += align_4(tvb, nds_offset);
+-                                                        pvalues[1].hfname= hf_nds_name;
+-                                                        break;
+-                                                case NDS_TAG_REFERRAL_INFORMATION:
+-                                                        pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[1].vtype = VTYPE_UINT32;
+-                                                        pvalues[1].vdesc = "Distance Object is From Root: 0x%08x";
+-                                                        pvalues[1].vlength = 4;
+-                                                        pvalues[1].voffset = nds_offset;
+-                                                        pvalues[1].hfname = hf_nds_eid;
+-                                                        nds_offset = nds_offset+pvalues[1].vlength;
+-                                                        pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                                        pvalues[2].vdesc = "Referral Records: %u";
+-                                                        pvalues[2].vlength = 4;
+-                                                        pvalues[2].voffset = nds_offset;
+-                                                        pvalues[2].hfname = hf_nds_depth;
+-                                                        pvalues[2].mvtype = MVTYPE_ADDR_REFERRAL_REPLY;
+-                                                        break;
+-                                                case NDS_TAG_ENTRY_AND_REFERRALS:
+-                                                        pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[1].vtype = VTYPE_UINT32;
+-                                                        pvalues[1].vdesc = "Result Flags: 0x%08x";
+-                                                        pvalues[1].vlength = 4;
+-                                                        pvalues[1].voffset = nds_offset;
+-                                                        pvalues[1].hfname = hf_nds_result_flags;
+-                                                        nds_offset = nds_offset+pvalues[1].vlength;
+-                                                        pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[2].vtype = VTYPE_UINT32;
+-                                                        pvalues[2].vdesc = "Entry ID: 0x%08x";
+-                                                        add_eid = TRUE;
+-                                                        resolve_eid = TRUE;
+-                                                        global_eid = pvalues[2].vvalue;
+-                                                        g_strlcpy(global_object_name, request_value->object_name, 256);
+-                                                        pvalues[2].vlength = 4;
+-                                                        pvalues[2].voffset = nds_offset;
+-                                                        pvalues[2].hfname = hf_nds_eid;
+-                                                        nds_offset = nds_offset+pvalues[2].vlength;
+-                                                        pvalues[3].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                                                        pvalues[3].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                                        pvalues[3].vdesc = "Referral Records: %u";
+-                                                        pvalues[3].vlength = 4;
+-                                                        pvalues[3].voffset = nds_offset;
+-                                                        pvalues[3].mvtype = MVTYPE_ADDR_REFERRAL_REPLY;
+-                                                        pvalues[3].hfname = hf_nds_referrals;
+-                                                        break;
+-                                                default:
++                                pvalues[0].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                pvalues[0].vstring = (char *)match_strval(pvalues[0].vvalue, nds_tags);
++                                if(pvalues[0].vstring == NULL)
++                                {
++                                        pvalues[0].vstring = "No Tags Set";
++                                }
++                                pvalues[0].vtype = VTYPE_STRING;
++                                pvalues[0].vdesc = "Tag: %s";
++                                pvalues[0].vlength = 4;
++                                pvalues[0].voffset = nds_offset;
++                                pvalues[0].hfname = hf_nds_tag_string;
++                                nds_offset = nds_offset+pvalues[0].vlength;
++                                switch(pvalues[0].vvalue)
++                                {
++                                        case NDS_TAG_NO_SUCH_ENTRY:
++                                                break;
++                                        case NDS_TAG_LOCAL_ENTRY:
++                                                pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[1].vtype = VTYPE_UINT32;
++                                                pvalues[1].vdesc = "Entry ID: 0x%08x";
++                                                add_eid = TRUE;
++                                                resolve_eid = TRUE;
++                                                g_strlcpy(global_object_name, request_value->object_name, 256);
++                                                global_eid = pvalues[1].vvalue;
++                                                pvalues[1].vlength = 4;
++                                                pvalues[1].voffset = nds_offset;
++                                                pvalues[1].hfname = hf_nds_eid;
++                                                nds_offset = nds_offset+pvalues[1].vlength;
++                                                pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
++                                                pvalues[2].vdesc = "Referral Records: %u";
++                                                pvalues[2].vlength = 4;
++                                                pvalues[2].voffset = nds_offset;
++                                                pvalues[2].hfname = hf_nds_referrals;
++                                                pvalues[2].mvtype = MVTYPE_LOC_ADDR_REFERRAL_REPLY;
++                                                break;
++                                        case NDS_TAG_REMOTE_ENTRY:
++                                                nds_offset += 4;   /* GUINT32 reserved field */
++                                                pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[1].vtype = VTYPE_UINT32;
++                                                pvalues[1].vdesc = "Entry ID: 0x%08x";
++                                                pvalues[1].vlength = 4;
++                                                pvalues[1].voffset = nds_offset;
++                                                pvalues[1].hfname = hf_nds_eid;
++                                                nds_offset = nds_offset+pvalues[1].vlength;
++                                                pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
++                                                pvalues[2].vdesc = "Referral Records: %u";
++                                                pvalues[2].vlength = 4;
++                                                pvalues[2].voffset = nds_offset;
++                                                pvalues[2].hfname = hf_nds_referrals;
++                                                pvalues[2].mvtype = MVTYPE_LOC_ADDR_REFERRAL_REPLY;
++                                                break;
++                                        case NDS_TAG_ALIAS_ENTRY:
++                                                pvalues[1].vtype = VTYPE_STRING;
++                                                pvalues[1].vdesc = "Alias Name: %s";
++                                                pvalues[1].mvtype = MVTYPE_ATTR_REQUEST;
++                                                pvalues[1].vvalue = 0;
++                                                pvalues[1].vlength = 256;
++                                                pvalues[1].vlength = tvb_get_letohl(tvb, nds_offset);
++                                                if (pvalues[1].vlength == 0x00)
++                                                {
++                                                        pvalues[1].vtype = VTYPE_NONE;
+                                                         break;
++                                                }
++                                                pvalues[1].voffset = nds_offset+4;
++                                                nds_offset += 4;
++                                                pvalues[1].vstring = get_string(tvb, pvalues[1].voffset, pvalues[1].vlength);
++                                                nds_offset += pvalues[1].vlength;
++                                                nds_offset += align_4(tvb, nds_offset);
++                                                pvalues[1].hfname= hf_nds_name;
++                                                break;
++                                        case NDS_TAG_REFERRAL_INFORMATION:
++                                                pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[1].vtype = VTYPE_UINT32;
++                                                pvalues[1].vdesc = "Distance Object is From Root: 0x%08x";
++                                                pvalues[1].vlength = 4;
++                                                pvalues[1].voffset = nds_offset;
++                                                pvalues[1].hfname = hf_nds_eid;
++                                                nds_offset = nds_offset+pvalues[1].vlength;
++                                                pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[2].vtype = VTYPE_MULTIVALUE_UINT32;
++                                                pvalues[2].vdesc = "Referral Records: %u";
++                                                pvalues[2].vlength = 4;
++                                                pvalues[2].voffset = nds_offset;
++                                                pvalues[2].hfname = hf_nds_depth;
++                                                pvalues[2].mvtype = MVTYPE_ADDR_REFERRAL_REPLY;
++                                                break;
++                                        case NDS_TAG_ENTRY_AND_REFERRALS:
++                                                pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[1].vtype = VTYPE_UINT32;
++                                                pvalues[1].vdesc = "Result Flags: 0x%08x";
++                                                pvalues[1].vlength = 4;
++                                                pvalues[1].voffset = nds_offset;
++                                                pvalues[1].hfname = hf_nds_result_flags;
++                                                nds_offset = nds_offset+pvalues[1].vlength;
++                                                pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[2].vtype = VTYPE_UINT32;
++                                                pvalues[2].vdesc = "Entry ID: 0x%08x";
++                                                add_eid = TRUE;
++                                                resolve_eid = TRUE;
++                                                global_eid = pvalues[2].vvalue;
++                                                g_strlcpy(global_object_name, request_value->object_name, 256);
++                                                pvalues[2].vlength = 4;
++                                                pvalues[2].voffset = nds_offset;
++                                                pvalues[2].hfname = hf_nds_eid;
++                                                nds_offset = nds_offset+pvalues[2].vlength;
++                                                pvalues[3].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                                pvalues[3].vtype = VTYPE_MULTIVALUE_UINT32;
++                                                pvalues[3].vdesc = "Referral Records: %u";
++                                                pvalues[3].vlength = 4;
++                                                pvalues[3].voffset = nds_offset;
++                                                pvalues[3].mvtype = MVTYPE_ADDR_REFERRAL_REPLY;
++                                                pvalues[3].hfname = hf_nds_referrals;
++                                                break;
++                                        default:
++                                                break;
+                                         }
+-                                        break;
++                                break;
+                         case 0x02:
+-                                        nds_offset -= 4;
+-                                        pvalues[0].vvalue = 1;
+-                                        pvalues[0].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                        pvalues[0].vdesc = "Entry Information";
+-                                        pvalues[0].vlength = 0;
+-                                        pvalues[0].voffset = nds_offset;
+-                                        pvalues[0].hfname = hf_nds_name;
+-                                        pvalues[0].mvtype = MVTYPE_LIST_PARTITIONS;
+-                                        pvalues[0].vflags = request_value->req_nds_flags;
+-                                        break;
++                                nds_offset -= 4;
++                                pvalues[0].vvalue = 1;
++                                pvalues[0].vtype = VTYPE_MULTIVALUE_UINT32;
++                                pvalues[0].vdesc = "Entry Information";
++                                pvalues[0].vlength = 0;
++                                pvalues[0].voffset = nds_offset;
++                                pvalues[0].hfname = hf_nds_name;
++                                pvalues[0].mvtype = MVTYPE_LIST_PARTITIONS;
++                                pvalues[0].vflags = request_value->req_nds_flags;
++                                break;
+                         case 0x03:
+                                         pvalues[0].vvalue = tvb_get_letohl(tvb, nds_offset);
+                                         pvalues[0].vtype = VTYPE_UINT32;
+@@ -8522,7 +8540,7 @@
+                                         pvalues[2].mvtype = MVTYPE_ATTR_REPLY;
+                                         pvalues[2].vflags = request_value->req_nds_flags;
+                                         pvalues[2].nds_version = request_value->nds_version;
+-                                        break;
++                                        pvalues[2].pflags = request_value->req_nds_prot_flags;
+                         case 0x04:
+                                 pvalues[0].vvalue = tvb_get_guint8(tvb, nds_offset);
+                                 if (pvalues[0].vvalue == 0)
+@@ -8660,7 +8678,7 @@
+                                 }
+                                 pvalues[1].voffset = nds_offset+4;
+                                 nds_offset += 4;
+-                                get_string(tvb, pvalues[1].voffset, pvalues[1].vlength, pvalues[1].vstring);
++                                pvalues[1].vstring = get_string(tvb, pvalues[1].voffset, pvalues[1].vlength);
+                                 nds_offset += pvalues[1].vlength;
+                                 nds_offset += align_4(tvb, nds_offset);
+                                 pvalues[1].hfname= hf_nds_name;
+@@ -8840,97 +8858,97 @@
+                         case 0x4d:
+                                 break;
+                         case 0x6e:
+-                            pvalues[0].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                            pvalues[0].vtype = VTYPE_UINT32;
+-                            pvalues[0].vdesc = "Iteration Handle: 0x%08x";
+-                            pvalues[0].vlength = 4;
+-                            pvalues[0].voffset = nds_offset;
+-                            pvalues[0].hfname= hf_nds_iteration;
+-                            nds_offset = nds_offset+pvalues[0].vlength;
+-                            pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                            pvalues[1].vtype = VTYPE_NONE;
+-                            pvalues[1].vdesc = "Iteration Completion Code: 0x%08x";
+-                            pvalues[1].vlength = 4;
+-                            pvalues[1].voffset = nds_offset;
+-                            pvalues[1].hfname = hf_iter_completion_code;
+-                            expert_item = proto_tree_add_uint_format(ncp_tree, pvalues[1].hfname, tvb, nds_offset,
+-                                    4, pvalues[1].vvalue, "NDS Iteration Completion Code: 0x%08x, %s",
+-                                    pvalues[1].vvalue, match_strval(pvalues[1].vvalue, nds_reply_errors));
++                                pvalues[0].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                pvalues[0].vtype = VTYPE_UINT32;
++                                pvalues[0].vdesc = "Iteration Handle: 0x%08x";
++                                pvalues[0].vlength = 4;
++                                pvalues[0].voffset = nds_offset;
++                                pvalues[0].hfname= hf_nds_iteration;
++                                nds_offset = nds_offset+pvalues[0].vlength;
++                                pvalues[1].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                pvalues[1].vtype = VTYPE_NONE;
++                                pvalues[1].vdesc = "Iteration Completion Code: 0x%08x";
++                                pvalues[1].vlength = 4;
++                                pvalues[1].voffset = nds_offset;
++                                pvalues[1].hfname = hf_iter_completion_code;
++                                expert_item = proto_tree_add_uint_format(ncp_tree, pvalues[1].hfname, tvb, nds_offset,
++                                        4, pvalues[1].vvalue, "NDS Iteration Completion Code: 0x%08x, %s",
++                                        pvalues[1].vvalue, match_strval(pvalues[1].vvalue, nds_reply_errors));
+ 
+-                            if (pvalues[1].vvalue != 0 && ncp_echo_err) {
+-                                    expert_add_info_format(pinfo, expert_item, PI_RESPONSE_CODE, PI_ERROR, "NDS Iteration Error: 0x%08x %s", pvalues[1].vvalue, match_strval(pvalues[1].vvalue, nds_reply_errors));
+-                            }
+-                            nds_offset = nds_offset+pvalues[1].vlength;
+-                            pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
+-                            pvalues[2].vtype = VTYPE_ITEM;
+-                            pvalues[2].vlength = 4;
+-                            pvalues[2].voffset = nds_offset;
+-                            pvalues[2].mvtype = MVTYPE_PROCESS_ITERATOR;
+-                            pvalues[2].hfname = hf_ncp_nds_iterverb;
+-                            nds_offset = nds_offset + pvalues[2].vlength;
+-                            break;
++                                if (pvalues[1].vvalue != 0 && ncp_echo_err) {
++                                        expert_add_info_format(pinfo, expert_item, PI_RESPONSE_CODE, PI_ERROR, "NDS Iteration Error: 0x%08x %s", pvalues[1].vvalue, match_strval(pvalues[1].vvalue, nds_reply_errors));
++                                }
++                                nds_offset = nds_offset+pvalues[1].vlength;
++                                pvalues[2].vvalue = tvb_get_letohl(tvb, nds_offset);
++                                pvalues[2].vtype = VTYPE_ITEM;
++                                pvalues[2].vlength = 4;
++                                pvalues[2].voffset = nds_offset;
++                                pvalues[2].mvtype = MVTYPE_PROCESS_ITERATOR;
++                                pvalues[2].hfname = hf_ncp_nds_iterverb;
++                                nds_offset = nds_offset + pvalues[2].vlength;
++                                break;
+                         default:
+                                 break;
+-                        }
+-                        if(request_value->nds_request_verb != 0)
+-                        {
+-                                proto_tree_add_uint_format(ncp_tree,
++                }
++                if(request_value->nds_request_verb != 0)
++                {
++                        proto_tree_add_uint_format(ncp_tree,
+                                     hf_ncp_nds_verb, tvb, 6, 0,
+                                     request_value->nds_request_verb,
+                                     "NDS Verb: %d, %s",
+ 				    request_value->nds_request_verb, verb_string);
+-                        }
+-                        /* NDS Entry ID's (EID) is identified in the reply
+-                         * packet of an NDS resolve name. We need to store
+-                         * this EID and its associated name into our hash
+-                         * so that we can resolve the name for other NDS
+-                         * requests. */
+-                        if (!pinfo->fd->flags.visited) {
+-                                if(add_eid)
+-                                {
+-                                        request_eid_value = ncp_eid_hash_lookup(conversation, global_eid);
+-                                        if (!request_eid_value) {
+-                                                request_eid_value = ncp_eid_hash_insert(global_eid);
+-                                                g_strlcpy(request_eid_value->object_name, global_object_name, 256);
+-                                        }
+-                                }
+-                        }
+-                        /* Echo EID data to expert Chat window */
+-                        if (add_eid && nds_echo_eid) {
+-                            expert_add_info_format(pinfo, NULL,
+-                                PI_RESPONSE_CODE, PI_CHAT,
+-                                "EID (%08x) = %s", global_eid, global_object_name);
+-                        }
+-                        /* For NDS requests with just an EID, resolve name
+-                         * from hash table. */
+-                        if(resolve_eid)
++                }
++                /* NDS Entry ID's (EID) is identified in the reply
++                 * packet of an NDS resolve name. We need to store
++                 * this EID and its associated name into our hash
++                 * so that we can resolve the name for other NDS
++                 * requests. */
++                if (!pinfo->fd->flags.visited) {
++                        if(add_eid)
+                         {
+                                 request_eid_value = ncp_eid_hash_lookup(conversation, global_eid);
+-                                if (request_eid_value) {
+-                                        g_strlcpy(global_object_name, request_eid_value->object_name, 256);
+-                                        proto_tree_add_string_format(ncp_tree,
+-                                            hf_nds_name, tvb, 6, 0,
+-                                            global_object_name,
+-                                            "NDS Name for EID - %s",
+-                                            global_object_name);
++                                if (!request_eid_value) {
++                                        request_eid_value = ncp_eid_hash_insert(global_eid);
++                                        g_strlcpy(request_eid_value->object_name, global_object_name, 256);
+                                 }
+                         }
+-			for (i = 0; i < 9; i++) {
+-				switch (pvalues[i].vtype) {
++                }
++                /* Echo EID data to expert Chat window */
++                if (add_eid && nds_echo_eid) {
++                        expert_add_info_format(pinfo, NULL,
++                                               PI_RESPONSE_CODE, PI_CHAT,
++                                               "EID (%08x) = %s", global_eid, global_object_name);
++                }
++                /* For NDS requests with just an EID, resolve name
++                 * from hash table. */
++                if(resolve_eid)
++                {
++                        request_eid_value = ncp_eid_hash_lookup(conversation, global_eid);
++                        if (request_eid_value) {
++                                g_strlcpy(global_object_name, request_eid_value->object_name, 256);
++                                proto_tree_add_string_format(ncp_tree,
++                                                             hf_nds_name, tvb, 6, 0,
++                                                             global_object_name,
++                                                             "NDS Name for EID - %s",
++                                                             global_object_name);
++                        }
++                }
++                for (i = 0; i < 9; i++) {
++                        switch (pvalues[i].vtype) {
+ 
+-				case VTYPE_NONE: /* no value */
++                                case VTYPE_NONE: /* no value */
+ 					break;
+ 
+-                case VTYPE_ITEM:
+-                    if (pvalues[i].mvtype == MVTYPE_PROCESS_ITERATOR)
+-                    {
+-                        dissect_nds_iterator(ncp_tree, tvb, pinfo, pvalues[i].vvalue, 0, nds_offset, FALSE);
+-                    }
+-                    else
+-                    {
+-                        proto_tree_add_item(ncp_tree, pvalues[i].hfname, tvb, pvalues[i].voffset,
+-                            pvalues[i].vlength, TRUE);
+-                    }
++                                case VTYPE_ITEM:
++                                        if (pvalues[i].mvtype == MVTYPE_PROCESS_ITERATOR)
++                                        {
++                                                dissect_nds_iterator(ncp_tree, tvb, pinfo, pvalues[i].vvalue, 0, nds_offset, FALSE);
++                                        }
++                                        else
++                                        {
++                                                proto_tree_add_item(ncp_tree, pvalues[i].hfname, tvb, pvalues[i].voffset,
++                                                    pvalues[i].vlength, TRUE);
++                                        }
+ 					break;
+ 				case VTYPE_UINT8:
+ 					proto_tree_add_uint_format(ncp_tree, pvalues[i].hfname, tvb, pvalues[i].voffset,
+@@ -8960,8 +8978,8 @@
+ 					process_bitfield(ncp_tree, tvb, &pvalues[i]);
+ 					break;
+ 
+-                case VTYPE_MULTIVALUE_UINT32:
+-                    process_multivalues(ncp_tree, tvb, pinfo, &pvalues[i]);
++                                case VTYPE_MULTIVALUE_UINT32:
++                                        process_multivalues(ncp_tree, tvb, pinfo, &pvalues[i]);
+ 					break;
+ 
+ 				default:
+@@ -8969,7 +8987,7 @@
+ 					    pvalues[i].vlength, pvalues[i].vtype, "NDS Parameter not defined %u",
+ 					    pvalues[i].vtype);
+ 					break;
+-				}
++                        }
+ 		}
+ 	}
+ }
+@@ -9033,23 +9051,23 @@
+ 				p_add_proto_data(pinfo->fd, proto_ncp,
+ 				    (void*) request_value);
+ 			}
+-            else {
+-                conversation = find_conversation(pinfo->fd->num,
+-                    &pinfo->src, &pinfo->dst, PT_NCP, 0, 0, 0);
+-                if (conversation != NULL) {
+-                    /* find the record telling us the request made
+-                       that caused this reply */
+-                    request_value = ncp_hash_lookup(conversation,
+-                        sequence);
+-                    if (request_value) {
+-                        ncp_rec = request_value->ncp_rec;
+-                    }
+-                    p_add_proto_data(pinfo->fd, proto_ncp,
+-                        (void*) request_value);
+-                }
+-                /* else... we haven't seen an NCP Request for that
+-                   conversation and sequence. */
+-            }
++                        else {
++                                conversation = find_conversation(pinfo->fd->num,
++                                    &pinfo->src, &pinfo->dst, PT_NCP, 0, 0, 0);
++                                if (conversation != NULL) {
++                                        /* find the record telling us the request made
++                                           that caused this reply */
++                                        request_value = ncp_hash_lookup(conversation,
++                                            sequence);
++                                        if (request_value) {
++                                                ncp_rec = request_value->ncp_rec;
++                                        }
++                                        p_add_proto_data(pinfo->fd, proto_ncp,
++                                            (void*) request_value);
++                                }
++                                /* else... we haven't seen an NCP Request for that
++                                   conversation and sequence. */
++                        }
+ 		}
+ 	}
+ 	else {
+@@ -9163,23 +9181,23 @@
+ 	}
+ 
+ 	if (ncp_tree) {
+-        guint8    conn_stat;
++                guint8    conn_stat;
+ 
+-        conn_stat = tvb_get_guint8(tvb, 7);
++                conn_stat = tvb_get_guint8(tvb, 7);
+ 		expert_item = proto_tree_add_item(ncp_tree, hf_ncp_connection_status, tvb,
+ 		    7, 1, FALSE);
+-        if (conn_stat != 0 && conn_stat != 0x40 ) {
+-            if (check_col(pinfo->cinfo, COL_INFO)) {
+-                col_set_str(pinfo->cinfo, COL_INFO,
+-                    "Error: Bad Connection Status");
+-            }
+-            if (ncp_echo_err) {
+-                expert_add_info_format(pinfo, expert_item,
+-                    PI_RESPONSE_CODE, PI_ERROR,
+-                    "Error: Bad Connection Status");
+-            }
+-            return;
+-        }
++                if (conn_stat != 0 && conn_stat != 0x40 ) {
++                        if (check_col(pinfo->cinfo, COL_INFO)) {
++                                col_set_str(pinfo->cinfo, COL_INFO,
++                                            "Error: Bad Connection Status");
++                        }
++                        if (ncp_echo_err) {
++                                expert_add_info_format(pinfo, expert_item,
++                                                       PI_RESPONSE_CODE, PI_ERROR,
++                                                       "Error: Bad Connection Status");
++                        }
++                        return;
++                }
+ 	}
+ 	/*
+ 	 * Unless this is a successful reply, that's all there
+@@ -9263,18 +9281,22 @@
+                         /* Echo the NDS EID and name for NCP 22,51 replies to expert tap */
+                         if (!pinfo->fd->flags.visited && ncp_rec->func == 0x16 && ncp_rec->subfunc == 0x33) {
+ 
+-                            char    eid_string[10];
+-                            char    global_object_name[256];
++                                char    eid_string[10];
++                                char    global_object_name[256];
+ 
+-                            build_expert_data(ncp_tree, "ncp.directory_services_object_id", eid_string, 0, TRUE);
+-                            build_expert_data(ncp_tree, "ncp.volume_name_len", global_object_name, 0, FALSE);
++                                build_expert_data(ncp_tree, "ncp.directory_services_object_id",
++                                                  eid_string, sizeof eid_string,
++                                                  0, TRUE);
++                                build_expert_data(ncp_tree, "ncp.volume_name_len",
++                                                  global_object_name, sizeof global_object_name,
++                                                  0, FALSE);
+ 
+-                            /* Echo EID data to expert Chat window */
+-                            if (nds_echo_eid) {
+-                                expert_add_info_format(pinfo, NULL,
+-                                    PI_RESPONSE_CODE, PI_CHAT,
+-                                    "EID (%s) = %s", eid_string, global_object_name);
+-                            }
++                                /* Echo EID data to expert Chat window */
++                                if (nds_echo_eid) {
++                                        expert_add_info_format(pinfo, NULL,
++                                            PI_RESPONSE_CODE, PI_CHAT,
++                                            "EID (%s) = %s", eid_string, global_object_name);
++                                }
+                         }
+                         /* Process ncp 123/17 address records manually to format correctly. */
+                         if (ncp_rec->func == 0x7b && ncp_rec->subfunc == 0x11) {
+@@ -9296,7 +9318,7 @@
+                         expert_item = proto_tree_add_text(ncp_tree, tvb, 8, -1,
+                             "No request record found. Parsing is impossible.");
+                         if (ncp_echo_err) {
+-                            expert_add_info_format(pinfo, expert_item, PI_SEQUENCE, PI_NOTE, "No request record found.");
++                                expert_add_info_format(pinfo, expert_item, PI_SEQUENCE, PI_NOTE, "No request record found.");
+                         }
+                 }
+         }
+@@ -9321,10 +9343,8 @@
+ 	guint32                 nds_frag = 0;
+ 	gboolean                added_arrow;
+ 	nds_val	                pvalues[9], prot_flags[1];
+-	char                    string_buffer[9][1024];
+ 	guint8                  nds_version = 0;
+ 	guint32                 foffset = 0;
+-	nw_uni_t                req_buffer;
+ 	char                    global_object_name[256];
+ 	guint32                 global_eid=0;
+ 	gboolean                resolve_eid=FALSE;
+@@ -9338,13 +9358,11 @@
+ 		pvalues[i].voffset = 0;
+ 		pvalues[i].hfname = 0;
+ 		pvalues[i].vdesc = "";
+-		string_buffer[i][0] = '\0';
+-		pvalues[i].vstring = string_buffer[i];
++		pvalues[i].vstring = NULL;
+ 		pvalues[i].mvtype = 0;
+ 		pvalues[i].vflags = 0;
+ 	}
+ 
+-        req_buffer.buffer[0] = '\0';
+         global_object_name[0] = '\0';
+ 
+         func = tvb_get_guint8(tvb, 6);
+@@ -9448,9 +9466,8 @@
+                                         }
+                                         pvalues[3].voffset = foffset+4;
+                                         foffset = foffset + 4;
+-                                        get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, req_buffer.buffer);
+-                                        pvalues[3].vstring = req_buffer.buffer;
+-                                        g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                        pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
++                                        g_strlcpy(global_object_name, pvalues[3].vstring, 256);
+                                         pvalues[3].hfname= hf_nds_name;
+                                         foffset = foffset+pvalues[3].vlength;
+                                         foffset += align_4(tvb, foffset);
+@@ -9517,8 +9534,7 @@
+                                         pvalues[7].vlength = tvb_get_letohl(tvb, foffset);
+                                         pvalues[7].voffset = foffset+4;
+                                         foffset = foffset + 4;
+-                                        get_string(tvb, pvalues[7].voffset, pvalues[7].vlength, req_buffer.buffer);
+-                                        pvalues[7].vstring = req_buffer.buffer;
++                                        pvalues[7].vstring = get_string(tvb, pvalues[7].voffset, pvalues[7].vlength);
+                                         pvalues[7].hfname= hf_nds_output_delimiter;
+                                         foffset = foffset+pvalues[7].vlength;
+                                         foffset += align_4(tvb, foffset);
+@@ -9898,6 +9914,11 @@
+                                 pvalues[0].voffset = foffset;
+                                 pvalues[0].hfname= hf_nds_ver;
+                                 foffset = foffset+pvalues[0].vlength;
++                                if (pvalues[0].vvalue == 1) {
++                                    /* Version 1 specifies for this offset value to always be a value of 1*/
++                                    /* No need to display to user */
++                                    foffset += 4; 
++                                }
+                                 pvalues[1].vvalue = tvb_get_letohl(tvb, foffset);
+                                 pvalues[1].vtype = VTYPE_UINT32;
+                                 pvalues[1].vdesc = "Entry ID: 0x%08x";
+@@ -9921,9 +9942,8 @@
+                                 }
+                                 pvalues[2].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[2].voffset, pvalues[2].vlength, req_buffer.buffer);
+-                                pvalues[2].vstring = req_buffer.buffer;
+-                                g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                pvalues[2].vstring = get_string(tvb, pvalues[2].voffset, pvalues[2].vlength);
++                                g_strlcpy(global_object_name, pvalues[2].vstring, 256);
+                                 pvalues[2].hfname= hf_nds_name;
+                                 foffset = foffset+pvalues[2].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -9936,7 +9956,7 @@
+                                 pvalues[3].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[3].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                 pvalues[3].hfname= hf_value_string;
+                                 foffset = foffset+pvalues[3].vlength;
+                                 break;
+@@ -10089,7 +10109,7 @@
+                                 pvalues[6].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[6].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[6].voffset, pvalues[6].vlength, pvalues[6].vstring);
++                                pvalues[6].vstring = get_string(tvb, pvalues[6].voffset, pvalues[6].vlength);
+                                 pvalues[6].hfname= hf_nds_name_filter;
+                                 foffset = foffset+pvalues[6].vlength;
+                                 if(pvalues[0].vvalue == 0)
+@@ -10105,7 +10125,7 @@
+                                 pvalues[7].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[7].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[7].voffset, pvalues[7].vlength, pvalues[7].vstring);
++                                pvalues[7].vstring = get_string(tvb, pvalues[7].voffset, pvalues[7].vlength);
+                                 pvalues[7].hfname= hf_nds_class_filter;
+                                 foffset = foffset+pvalues[7].vlength;
+                                 if(pvalues[0].vvalue == 1)
+@@ -10340,9 +10360,8 @@
+                                         }
+                                         pvalues[3].voffset = foffset+4;
+                                         foffset = foffset + 4;
+-                                        get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, req_buffer.buffer);
+-                                        pvalues[3].vstring = req_buffer.buffer;
+-                                        g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                        pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
++                                        g_strlcpy(global_object_name, pvalues[3].vstring, 256);
+                                         pvalues[3].hfname= hf_nds_relative_dn;
+                                         foffset = foffset+pvalues[3].vlength;
+                                         foffset += align_4(tvb, foffset);
+@@ -10389,9 +10408,8 @@
+                                         }
+                                         pvalues[4].voffset = foffset+4;
+                                         foffset = foffset + 4;
+-                                        get_string(tvb, pvalues[4].voffset, pvalues[4].vlength, req_buffer.buffer);
+-                                        pvalues[4].vstring = req_buffer.buffer;
+-                                        g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                        pvalues[4].vstring = get_string(tvb, pvalues[4].voffset, pvalues[4].vlength);
++                                        g_strlcpy(global_object_name, pvalues[4].vstring, 256);
+                                         pvalues[4].hfname= hf_nds_relative_dn;
+                                         foffset = foffset+pvalues[4].vlength;
+                                         foffset += align_4(tvb, foffset);
+@@ -10532,7 +10550,7 @@
+                                 pvalues[3].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[3].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                 pvalues[3].hfname= hf_nds_new_rdn;
+                                 foffset = foffset+pvalues[3].vlength;
+                                 break;
+@@ -10597,9 +10615,8 @@
+                                 }
+                                 pvalues[2].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[2].voffset, pvalues[2].vlength, req_buffer.buffer);
+-                                pvalues[2].vstring = req_buffer.buffer;
+-                                g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                pvalues[2].vstring = get_string(tvb, pvalues[2].voffset, pvalues[2].vlength);
++                                g_strlcpy(global_object_name, pvalues[2].vstring, 256);
+                                 pvalues[2].hfname= hf_nds_name;
+                                 foffset = foffset+pvalues[2].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -10662,9 +10679,8 @@
+                                 }
+                                 pvalues[1].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[1].voffset, pvalues[1].vlength, req_buffer.buffer);
+-                                pvalues[1].vstring = req_buffer.buffer;
+-                                g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                pvalues[1].vstring = get_string(tvb, pvalues[1].voffset, pvalues[1].vlength);
++                                g_strlcpy(global_object_name, pvalues[1].vstring, 256);
+                                 pvalues[1].hfname= hf_nds_attribute_dn;
+                                 break;
+                         case 0x0e:
+@@ -10719,7 +10735,7 @@
+                                 foffset += align_4(tvb, foffset);
+                                 pvalues[4].vvalue = tvb_get_letohl(tvb, foffset);
+                                 pvalues[4].vtype = VTYPE_MULTIVALUE_UINT32;
+-                                pvalues[4].vdesc = "Classes: %d";
++                                pvalues[4].vdesc = "Classes: %u";
+                                 pvalues[4].vlength = 4;
+                                 pvalues[4].voffset = foffset;
+                                 pvalues[4].mvtype = MVTYPE_READ_CLASS_REQ;
+@@ -10746,9 +10762,8 @@
+                                 }
+                                 pvalues[1].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[1].voffset, pvalues[1].vlength, req_buffer.buffer);
+-                                pvalues[1].vstring = req_buffer.buffer;
+-                                g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                pvalues[1].vstring = get_string(tvb, pvalues[1].voffset, pvalues[1].vlength);
++                                g_strlcpy(global_object_name, pvalues[1].vstring, 256);
+                                 pvalues[1].hfname= hf_nds_base_class;
+                                 foffset = foffset+pvalues[1].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -10781,9 +10796,8 @@
+                                 }
+                                 pvalues[1].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[1].voffset, pvalues[1].vlength, req_buffer.buffer);
+-                                pvalues[1].vstring = req_buffer.buffer;
+-                                g_strlcpy(global_object_name, req_buffer.buffer, 256);
++                                pvalues[1].vstring = get_string(tvb, pvalues[1].voffset, pvalues[1].vlength);
++                                g_strlcpy(global_object_name, pvalues[1].vstring, 256);
+                                 pvalues[1].hfname= hf_nds_base;
+                                 break;
+                         case 0x12:
+@@ -10841,8 +10855,7 @@
+                                 }
+                                 pvalues[2].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[2].voffset, pvalues[2].vlength, req_buffer.buffer);
+-                                pvalues[2].vstring = req_buffer.buffer;
++                                pvalues[2].vstring = get_string(tvb, pvalues[2].voffset, pvalues[2].vlength);
+                                 pvalues[2].hfname= hf_nds_name;
+                                 foffset = foffset+pvalues[2].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -10859,7 +10872,7 @@
+                                 }
+                                 pvalues[3].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                 pvalues[3].hfname= hf_nds_name;
+                                 foffset = foffset+pvalues[3].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -10878,7 +10891,7 @@
+                                         }
+                                         pvalues[4].voffset = foffset+4;
+                                         foffset = foffset + 4;
+-                                        get_string(tvb, pvalues[4].voffset, pvalues[4].vlength, pvalues[4].vstring);
++                                        pvalues[4].vstring = get_string(tvb, pvalues[4].voffset, pvalues[4].vlength);
+                                         pvalues[4].hfname= hf_nds_name;
+                                         foffset = foffset+pvalues[4].vlength;
+                                         foffset += align_4(tvb, foffset);
+@@ -11134,7 +11147,7 @@
+                                 }
+                                 pvalues[4].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[4].voffset, pvalues[4].vlength, pvalues[4].vstring);
++                                pvalues[4].vstring = get_string(tvb, pvalues[4].voffset, pvalues[4].vlength);
+                                 pvalues[4].hfname= hf_nds_target_name;
+                                 break;
+                         case 0x1a:
+@@ -11177,7 +11190,7 @@
+                                 }
+                                 pvalues[3].voffset = foffset+4;
+                                 foffset += 4;
+-                                get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                 foffset += pvalues[3].vlength;
+                                 foffset += align_4(tvb, foffset);
+                                 pvalues[3].hfname= hf_nds_stream_name;
+@@ -11249,7 +11262,7 @@
+                                         }
+                                         pvalues[3].voffset = foffset+4;
+                                         foffset += 4;
+-                                        get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                        pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                         foffset += pvalues[3].vlength;
+                                         foffset += align_4(tvb, foffset);
+                                         pvalues[3].hfname= hf_nds_root_name;
+@@ -11312,7 +11325,7 @@
+                                 pvalues[3].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[3].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[3].voffset, pvalues[3].vlength, pvalues[3].vstring);
++                                pvalues[3].vstring = get_string(tvb, pvalues[3].voffset, pvalues[3].vlength);
+                                 pvalues[3].hfname= hf_nds_new_rdn;
+                                 foffset = foffset+pvalues[3].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -11329,7 +11342,7 @@
+                                 }
+                                 pvalues[4].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[4].voffset, pvalues[4].vlength, pvalues[4].vstring);
++                                pvalues[4].vstring = get_string(tvb, pvalues[4].voffset, pvalues[4].vlength);
+                                 pvalues[4].hfname= hf_nds_target_name;
+                                 break;
+                         case 0x2b:
+@@ -11375,7 +11388,7 @@
+                                 pvalues[4].vlength = tvb_get_letohl(tvb, foffset);
+                                 pvalues[4].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[4].voffset, pvalues[4].vlength, pvalues[4].vstring);
++                                pvalues[4].vstring = get_string(tvb, pvalues[4].voffset, pvalues[4].vlength);
+                                 pvalues[4].hfname= hf_nds_new_rdn;
+                                 foffset = foffset+pvalues[4].vlength;
+                                 foffset += align_4(tvb, foffset);
+@@ -11392,7 +11405,7 @@
+                                 }
+                                 pvalues[5].voffset = foffset+4;
+                                 foffset = foffset + 4;
+-                                get_string(tvb, pvalues[5].voffset, pvalues[5].vlength, pvalues[5].vstring);
++                                pvalues[5].vstring = get_string(tvb, pvalues[5].voffset, pvalues[5].vlength);
+                                 pvalues[5].hfname= hf_nds_target_name;
+                                 break;
+                         case 0x2c:
+@@ -11618,92 +11631,92 @@
+                                 pvalues[0].vtype = VTYPE_NONE; /* Not Defined */
+                                 break;
+                         case 0x6e:
+-                            pvalues[0].vvalue = tvb_get_letohl(tvb, foffset);
+-                            pvalues[0].vtype = VTYPE_UINT32;
+-                            pvalues[0].vdesc = "Version: %u";
+-                            pvalues[0].vlength = 4;
+-                            pvalues[0].hfname = hf_nds_ver;
+-                            pvalues[0].voffset = foffset;
+-                            foffset = foffset+pvalues[0].vlength;
+-                            pvalues[1].vvalue = tvb_get_letohl(tvb, foffset);
+-                            global_flags = pvalues[1].vvalue;
+-                            pvalues[1].vtype = VTYPE_BITFIELD;
+-                            pvalues[1].vdesc = "Request Flags:";
+-                            pvalues[1].vlength = 2;
+-                            pvalues[1].hfname= hf_nds_rflags;
+-                            pvalues[1].voffset = foffset;
+-                            pvalues[1].bit1 = "Typeless";
+-                            pvalues[1].bit1hfname = hf_bit1rflags;
+-                            pvalues[1].bit2 = "Slashed";
+-                            pvalues[1].bit2hfname = hf_bit2rflags;
+-                            pvalues[1].bit3 = "Dotted";
+-                            pvalues[1].bit3hfname = hf_bit3rflags;
+-                            pvalues[1].bit4 = "Tuned";
+-                            pvalues[1].bit4hfname = hf_bit4rflags;
+-                            pvalues[1].bit5 = "Not Defined";
+-                            pvalues[1].bit5hfname = hf_bit5rflags;
+-                            pvalues[1].bit6 = "Not Defined";
+-                            pvalues[1].bit6hfname = hf_bit6rflags;
+-                            pvalues[1].bit7 = "Not Defined";
+-                            pvalues[1].bit7hfname = hf_bit7rflags;
+-                            pvalues[1].bit8 = "Not Defined";
+-                            pvalues[1].bit8hfname = hf_bit8rflags;
+-                            pvalues[1].bit9 = "Not Defined";
+-                            pvalues[1].bit9hfname = hf_bit9rflags;
+-                            pvalues[1].bit10 = "Not Defined";
+-                            pvalues[1].bit10hfname = hf_bit10rflags;
+-                            pvalues[1].bit11 = "Not Defined";
+-                            pvalues[1].bit11hfname = hf_bit11rflags;
+-                            pvalues[1].bit12 = "Not Defined";
+-                            pvalues[1].bit12hfname = hf_bit12rflags;
+-                            pvalues[1].bit13 = "Not Defined";
+-                            pvalues[1].bit13hfname = hf_bit13rflags;
+-                            pvalues[1].bit14 = "Not Defined";
+-                            pvalues[1].bit14hfname = hf_bit14rflags;
+-                            pvalues[1].bit15 = "Not Defined";
+-                            pvalues[1].bit15hfname = hf_bit15rflags;
+-                            pvalues[1].bit16 = "Not Defined";
+-                            pvalues[1].bit16hfname = hf_bit16rflags;
+-                            foffset = foffset+pvalues[1].vlength+2;
+-                            pvalues[2].vvalue = tvb_get_letohl(tvb, foffset);
+-                            pvalues[2].vtype = VTYPE_UINT32;
+-                            pvalues[2].vdesc = "Iteration Handle: 0x%08x";
+-                            pvalues[2].vlength = 4;
+-                            pvalues[2].voffset = foffset;
+-                            pvalues[2].hfname= hf_nds_iteration;
+-                            foffset = foffset+pvalues[2].vlength;
+-                            pvalues[3].vvalue = tvb_get_letohl(tvb, foffset);
+-                            pvalues[3].vtype = VTYPE_UINT32;
+-                            pvalues[3].vdesc = "Base Entry ID: 0x%08x";
+-                            pvalues[3].vlength = 4;
+-                            resolve_eid = TRUE;
+-                            global_eid = pvalues[3].vvalue;
+-                            pvalues[3].voffset = foffset;
+-                            pvalues[3].hfname= hf_nds_eid;
+-                            foffset = foffset+pvalues[3].vlength;
+-                            pvalues[4].vvalue = tvb_get_letohl(tvb, foffset);
+-                            pvalues[4].vtype = VTYPE_UINT32;
+-                            pvalues[4].vdesc = (char *)match_strval(pvalues[4].vvalue, nds_scope_vals);
+-                            if(pvalues[4].vdesc == NULL)
+-                            {
+-                                    pvalues[4].vdesc = "Unknown Scope Defined";
+-                            }
+-                            pvalues[4].vlength = 4;
+-                            pvalues[4].hfname = hf_nds_scope;
+-                            pvalues[4].voffset = foffset;
+-                            foffset = foffset+pvalues[4].vlength;
+-                            pvalues[5].vvalue = tvb_get_letohl(tvb, foffset);
+-                            pvalues[5].vtype = VTYPE_MULTIVALUE_UINT32;
+-                            pvalues[5].vdesc = "Iterator: 0x%08x";
+-                            pvalues[5].vlength = 4;
+-                            pvalues[5].voffset = foffset;
+-                            pvalues[5].hfname= hf_nds_iterator;
+-                            pvalues[5].mvtype = MVTYPE_PROCESS_ITERATOR;
+-                            foffset = foffset+pvalues[5].vlength;
+-                            break;
++                                pvalues[0].vvalue = tvb_get_letohl(tvb, foffset);
++                                pvalues[0].vtype = VTYPE_UINT32;
++                                pvalues[0].vdesc = "Version: %u";
++                                pvalues[0].vlength = 4;
++                                pvalues[0].hfname = hf_nds_ver;
++                                pvalues[0].voffset = foffset;
++                                foffset = foffset+pvalues[0].vlength;
++                                pvalues[1].vvalue = tvb_get_letohl(tvb, foffset);
++                                global_flags = pvalues[1].vvalue;
++                                pvalues[1].vtype = VTYPE_BITFIELD;
++                                pvalues[1].vdesc = "Request Flags:";
++                                pvalues[1].vlength = 2;
++                                pvalues[1].hfname= hf_nds_rflags;
++                                pvalues[1].voffset = foffset;
++                                pvalues[1].bit1 = "Typeless";
++                                pvalues[1].bit1hfname = hf_bit1rflags;
++                                pvalues[1].bit2 = "Slashed";
++                                pvalues[1].bit2hfname = hf_bit2rflags;
++                                pvalues[1].bit3 = "Dotted";
++                                pvalues[1].bit3hfname = hf_bit3rflags;
++                                pvalues[1].bit4 = "Tuned";
++                                pvalues[1].bit4hfname = hf_bit4rflags;
++                                pvalues[1].bit5 = "Not Defined";
++                                pvalues[1].bit5hfname = hf_bit5rflags;
++                                pvalues[1].bit6 = "Not Defined";
++                                pvalues[1].bit6hfname = hf_bit6rflags;
++                                pvalues[1].bit7 = "Not Defined";
++                                pvalues[1].bit7hfname = hf_bit7rflags;
++                                pvalues[1].bit8 = "Not Defined";
++                                pvalues[1].bit8hfname = hf_bit8rflags;
++                                pvalues[1].bit9 = "Not Defined";
++                                pvalues[1].bit9hfname = hf_bit9rflags;
++                                pvalues[1].bit10 = "Not Defined";
++                                pvalues[1].bit10hfname = hf_bit10rflags;
++                                pvalues[1].bit11 = "Not Defined";
++                                pvalues[1].bit11hfname = hf_bit11rflags;
++                                pvalues[1].bit12 = "Not Defined";
++                                pvalues[1].bit12hfname = hf_bit12rflags;
++                                pvalues[1].bit13 = "Not Defined";
++                                pvalues[1].bit13hfname = hf_bit13rflags;
++                                pvalues[1].bit14 = "Not Defined";
++                                pvalues[1].bit14hfname = hf_bit14rflags;
++                                pvalues[1].bit15 = "Not Defined";
++                                pvalues[1].bit15hfname = hf_bit15rflags;
++                                pvalues[1].bit16 = "Not Defined";
++                                pvalues[1].bit16hfname = hf_bit16rflags;
++                                foffset = foffset+pvalues[1].vlength+2;
++                                pvalues[2].vvalue = tvb_get_letohl(tvb, foffset);
++                                pvalues[2].vtype = VTYPE_UINT32;
++                                pvalues[2].vdesc = "Iteration Handle: 0x%08x";
++                                pvalues[2].vlength = 4;
++                                pvalues[2].voffset = foffset;
++                                pvalues[2].hfname= hf_nds_iteration;
++                                foffset = foffset+pvalues[2].vlength;
++                                pvalues[3].vvalue = tvb_get_letohl(tvb, foffset);
++                                pvalues[3].vtype = VTYPE_UINT32;
++                                pvalues[3].vdesc = "Base Entry ID: 0x%08x";
++                                pvalues[3].vlength = 4;
++                                resolve_eid = TRUE;
++                                global_eid = pvalues[3].vvalue;
++                                pvalues[3].voffset = foffset;
++                                pvalues[3].hfname= hf_nds_eid;
++                                foffset = foffset+pvalues[3].vlength;
++                                pvalues[4].vvalue = tvb_get_letohl(tvb, foffset);
++                                pvalues[4].vtype = VTYPE_UINT32;
++                                pvalues[4].vdesc = (char *)match_strval(pvalues[4].vvalue, nds_scope_vals);
++                                if(pvalues[4].vdesc == NULL)
++                                {
++                                        pvalues[4].vdesc = "Unknown Scope Defined";
++                                }
++                                pvalues[4].vlength = 4;
++                                pvalues[4].hfname = hf_nds_scope;
++                                pvalues[4].voffset = foffset;
++                                foffset = foffset+pvalues[4].vlength;
++                                pvalues[5].vvalue = tvb_get_letohl(tvb, foffset);
++                                pvalues[5].vtype = VTYPE_MULTIVALUE_UINT32;
++                                pvalues[5].vdesc = "Iterator: 0x%08x";
++                                pvalues[5].vlength = 4;
++                                pvalues[5].voffset = foffset;
++                                pvalues[5].hfname= hf_nds_iterator;
++                                pvalues[5].mvtype = MVTYPE_PROCESS_ITERATOR;
++                                foffset = foffset+pvalues[5].vlength;
++                                break;
+                		default:
+-                            pvalues[0].vtype = VTYPE_NONE; /* Not Defined */
+-                            break;
++                                pvalues[0].vtype = VTYPE_NONE; /* Not Defined */
++                                break;
+                	}
+         }
+         /* Fill in the INFO column. */
+@@ -11711,7 +11724,7 @@
+         	if (ncp_rec) {
+               		col_set_str(pinfo->cinfo, COL_PROTOCOL, "NDS");
+                         if (nds_frag != 0xffffffff) {
+-                                col_add_fstr(pinfo->cinfo, COL_INFO, "C Continue NDS Fragment %08x", nds_frag);
++                                col_add_fstr(pinfo->cinfo, COL_INFO, "C Continue NDS Fragment 0x%08x", nds_frag);
+                         }
+                         else {
+                        		col_add_fstr(pinfo->cinfo, COL_INFO, "C NDS %s", verb_string);
+@@ -11819,59 +11832,59 @@
+ 
+         				proto_tree_add_item(ncp_tree, hf_ncp_message_size, tvb, 16, 4, TRUE);
+ 
+-                        nds_prot_flags = tvb_get_letohs(tvb, 22);
+-                        prot_flags[0].vvalue = nds_prot_flags;
+-                        prot_flags[0].vtype = VTYPE_BITFIELD;
+-                        prot_flags[0].vdesc = "NDS Protocol Flags:";
+-                        prot_flags[0].vlength = 2;
+-                        prot_flags[0].hfname= hf_ncp_nds_flag;
+-                        prot_flags[0].voffset = 22;
+-                        prot_flags[0].bit1 = "Not Defined";
+-                        prot_flags[0].bit1hfname = hf_ndsprot1flag;
+-                        prot_flags[0].bit2 = "Not Defined";
+-                        prot_flags[0].bit2hfname = hf_ndsprot2flag;
+-                        prot_flags[0].bit3 = "Not Defined";
+-                        prot_flags[0].bit3hfname = hf_ndsprot3flag;
+-                        prot_flags[0].bit4 = "Not Defined";
+-                        prot_flags[0].bit4hfname = hf_ndsprot4flag;
+-                        prot_flags[0].bit5 = "Not Defined";
+-                        prot_flags[0].bit5hfname = hf_ndsprot5flag;
+-                        prot_flags[0].bit6 = "Not Defined";
+-                        prot_flags[0].bit6hfname = hf_ndsprot6flag;
+-                        prot_flags[0].bit7 = "Not Defined";
+-                        prot_flags[0].bit7hfname = hf_ndsprot7flag;
+-                        prot_flags[0].bit8 = "Not Defined";
+-                        prot_flags[0].bit8hfname = hf_ndsprot8flag;
+-                        prot_flags[0].bit9 = "Not Defined";
+-                        prot_flags[0].bit9hfname = hf_ndsprot9flag;
+-                        prot_flags[0].bit10 = "Not Defined";
+-                        prot_flags[0].bit10hfname = hf_ndsprot10flag;
+-                        prot_flags[0].bit11= "Not Defined";
+-                        prot_flags[0].bit11hfname = hf_ndsprot11flag;
+-                        prot_flags[0].bit12 = "Not Defined";
+-                        prot_flags[0].bit12hfname = hf_ndsprot12flag;
+-                        prot_flags[0].bit13 = "Not Defined";
+-                        prot_flags[0].bit13hfname = hf_ndsprot13flag;
+-                        prot_flags[0].bit14 = "Not Defined";
+-                        prot_flags[0].bit14hfname = hf_ndsprot14flag;
+-                        prot_flags[0].bit15 = "Include CRC in NDS Header";
+-                        prot_flags[0].bit15hfname = hf_ndsprot15flag;
+-                        prot_flags[0].bit16 = "Client is a Server";
+-                        prot_flags[0].bit16hfname = hf_ndsprot16flag;
++                                        nds_prot_flags = tvb_get_letohs(tvb, 22);
++                                        prot_flags[0].vvalue = nds_prot_flags;
++                                        prot_flags[0].vtype = VTYPE_BITFIELD;
++                                        prot_flags[0].vdesc = "NDS Protocol Flags:";
++                                        prot_flags[0].vlength = 2;
++                                        prot_flags[0].hfname= hf_ncp_nds_flag;
++                                        prot_flags[0].voffset = 22;
++                                        prot_flags[0].bit1 = "Not Defined";
++                                        prot_flags[0].bit1hfname = hf_ndsprot1flag;
++                                        prot_flags[0].bit2 = "Not Defined";
++                                        prot_flags[0].bit2hfname = hf_ndsprot2flag;
++                                        prot_flags[0].bit3 = "Not Defined";
++                                        prot_flags[0].bit3hfname = hf_ndsprot3flag;
++                                        prot_flags[0].bit4 = "Not Defined";
++                                        prot_flags[0].bit4hfname = hf_ndsprot4flag;
++                                        prot_flags[0].bit5 = "Not Defined";
++                                        prot_flags[0].bit5hfname = hf_ndsprot5flag;
++                                        prot_flags[0].bit6 = "Not Defined";
++                                        prot_flags[0].bit6hfname = hf_ndsprot6flag;
++                                        prot_flags[0].bit7 = "Not Defined";
++                                        prot_flags[0].bit7hfname = hf_ndsprot7flag;
++                                        prot_flags[0].bit8 = "Not Defined";
++                                        prot_flags[0].bit8hfname = hf_ndsprot8flag;
++                                        prot_flags[0].bit9 = "Not Defined";
++                                        prot_flags[0].bit9hfname = hf_ndsprot9flag;
++                                        prot_flags[0].bit10 = "Not Defined";
++                                        prot_flags[0].bit10hfname = hf_ndsprot10flag;
++                                        prot_flags[0].bit11= "Not Defined";
++                                        prot_flags[0].bit11hfname = hf_ndsprot11flag;
++                                        prot_flags[0].bit12 = "Not Defined";
++                                        prot_flags[0].bit12hfname = hf_ndsprot12flag;
++                                        prot_flags[0].bit13 = "Not Defined";
++                                        prot_flags[0].bit13hfname = hf_ndsprot13flag;
++                                        prot_flags[0].bit14 = "Not Defined";
++                                        prot_flags[0].bit14hfname = hf_ndsprot14flag;
++                                        prot_flags[0].bit15 = "Include CRC in NDS Header";
++                                        prot_flags[0].bit15hfname = hf_ndsprot15flag;
++                                        prot_flags[0].bit16 = "Client is a Server";
++                                        prot_flags[0].bit16hfname = hf_ndsprot16flag;
+ 
+-                        process_bitfield(ncp_tree, tvb, &prot_flags[0]);
++                                        process_bitfield(ncp_tree, tvb, &prot_flags[0]);
+ 
+-                        if (nds_version == 0) {
+-                            proto_tree_add_uint_format(ncp_tree, hf_ncp_nds_verb, tvb, 24, 4,
+-                                    nds_verb, "NDS Verb: %d, (0x%02x), %s",
+-                                    nds_verb, nds_verb, verb_string);
+-                        }
+-                        else {
+-                            proto_tree_add_uint_format(ncp_tree, hf_ncp_nds_verb, tvb, 32, 4,
+-                                    nds_verb, "NDS Verb: %d, (0x%02x), %s",
+-                                    nds_verb, nds_verb, verb_string);
+-                        }
+-                        added_arrow = FALSE;
++                                        if (nds_version == 0) {
++                                                proto_tree_add_uint_format(ncp_tree, hf_ncp_nds_verb, tvb, 24, 4,
++                                                        nds_verb, "NDS Verb: %d, (0x%02x), %s",
++                                                        nds_verb, nds_verb, verb_string);
++                                        }
++                                        else {
++                                                proto_tree_add_uint_format(ncp_tree, hf_ncp_nds_verb, tvb, 32, 4,
++                                                        nds_verb, "NDS Verb: %d, (0x%02x), %s",
++                                                        nds_verb, nds_verb, verb_string);
++                                        }
++                                        added_arrow = FALSE;
+ 					for (i = 0; i < 9; i++) {
+ 						switch (pvalues[i].vtype) {
+ 
+@@ -11880,13 +11893,13 @@
+ 
+ 						case VTYPE_UINT8:
+ 							proto_tree_add_uint_format(ncp_tree, pvalues[i].hfname, tvb, pvalues[i].voffset,
+-							    pvalues[i].vlength, pvalues[i].vtype, "NDS Parameter not defined %d",
++							    pvalues[i].vlength, pvalues[i].vtype, "NDS Parameter not defined %u",
+ 							    pvalues[i].vtype);
+ 							break;
+ 
+ 						case VTYPE_UINT16:
+ 							proto_tree_add_uint_format(ncp_tree, pvalues[i].hfname, tvb, pvalues[i].voffset,
+-							    pvalues[i].vlength, pvalues[i].vtype, "NDS Parameter not defined %d",
++							    pvalues[i].vlength, pvalues[i].vtype, "NDS Parameter not defined %u",
+ 							    pvalues[i].vtype);
+ 							break;
+ 
+@@ -11937,13 +11950,13 @@
+ 								 */
+ 								if (check_col(pinfo->cinfo, COL_INFO)) {
+ 									col_append_str(pinfo->cinfo, COL_INFO, pvalues[i].vstring);
+-                                    if (pvalues[i].mvtype != MVTYPE_PROCESS_ITERATOR) {
+-                                        if (!added_arrow) {
+-                                            col_append_str(pinfo->cinfo, COL_INFO, " -> ");
+-                                            added_arrow = TRUE;
+-                                        }
+-                                        col_append_str(pinfo->cinfo, COL_INFO, mv_resolve_name_string);
+-                                    }
++                                                                        if (pvalues[i].mvtype != MVTYPE_PROCESS_ITERATOR) {
++                                                                                if (!added_arrow) {
++                                                                                        col_append_str(pinfo->cinfo, COL_INFO, " -> ");
++                                                                                        added_arrow = TRUE;
++                                                                                }
++                                                                                col_append_str(pinfo->cinfo, COL_INFO, mv_resolve_name_string);
++                                                                        }
+ 								}
+ 							}
+ 							break;
+@@ -11963,8 +11976,8 @@
+ 							    pvalues[i].vtype);
+ 							break;
+ 						}
+-                                                /* For NDS requests with just an EID, resolve name from hash table. */
+                                         }
++                                        /* For NDS requests with just an EID, resolve name from hash table. */
+                                         request_eid_value = ncp_eid_hash_lookup(conversation, global_eid);
+                                         if(resolve_eid) {
+                                                 if (request_eid_value) {
+@@ -12019,12 +12032,11 @@
+         guint32                 nds_flags;
+         guint32                 ping_version;
+ 	nds_val			pvalue;
+-	char			string_buffer[1024];
+ 
+ #ifdef FAKE_TREE_IS_VISIBLE
+-    if (ncp_tree) {
+-        PTREE_DATA(ncp_tree)->visible=1;
+-    }
++        if (ncp_tree) {
++                PTREE_DATA(ncp_tree)->visible=1;
++        }
+ #endif
+ 
+ 	pvalue.vvalue = 0;
+@@ -12032,8 +12044,7 @@
+ 	pvalue.voffset = 0;
+ 	pvalue.hfname = 0;
+ 	pvalue.vdesc = "";
+-	string_buffer[0] = '\0';
+-	pvalue.vstring = string_buffer;
++	pvalue.vstring = NULL;
+ 	pvalue.mvtype = 0;
+ 
+ 	func = tvb_get_guint8(tvb, 6);
+@@ -12124,17 +12135,19 @@
+ 			length_remaining = tvb_reported_length_remaining(tvb, 8);
+ 
+ 			if (length_remaining >= 8) {
++				proto_item *pi;
++
+                                 ping_version = tvb_get_letohl(tvb, 8);
+ 				proto_tree_add_uint(ncp_tree, hf_nds_ping_version, tvb, 8,
+-				    4, ping_version);
++						    4, ping_version);
+ 				nds_flags = tvb_get_letohl(tvb, 12);
+ 				if (request_value){
+-                    request_value->nds_request_verb = 0xf0;
+-                    request_value->req_nds_flags = nds_flags;
+-                }
+-                    proto_tree_add_uint_hidden(ncp_tree, hf_ncp_nds_verb, tvb, 0, 0,
+-                        240);
++                                        request_value->nds_request_verb = 0xf0;
++                                        request_value->req_nds_flags = nds_flags;
++				}
+ 
++				pi = proto_tree_add_uint(ncp_tree, hf_ncp_nds_verb, tvb, 0, 0, 240);
++				PROTO_ITEM_SET_HIDDEN(pi);
+ 
+                                 pvalue.vvalue = tvb_get_letohs(tvb, 12);
+                                 pvalue.vtype = VTYPE_BITFIELD;
+@@ -12225,15 +12238,16 @@
+ 		default:
+ 			; /* nothing */
+ 			break;
+-		}
+-		ptvc = ptvcursor_new(ncp_tree, tvb, 7);
+-		if (ncp_rec && ncp_rec->request_ptvc) {
+-			clear_repeat_vars();
+-			process_ptvc_record(ptvc, ncp_rec->request_ptvc, NULL, TRUE, ncp_rec);
+-		}
+-		ptvcursor_free(ptvc);
++        }
++        ptvc = ptvcursor_new(ncp_tree, tvb, 7);
++        if (ncp_rec && ncp_rec->request_ptvc) {
++                clear_repeat_vars();
++                process_ptvc_record(ptvc, ncp_rec->request_ptvc, NULL, TRUE, ncp_rec);
++        }
++        ptvcursor_free(ptvc);
+ 
+-		/* Free the temporary proto_tree */
+-		CLEANUP_CALL_AND_POP;
++        /* Free the temporary proto_tree */
++        CLEANUP_CALL_AND_POP;
+ 	}
+ }
++
--- wireshark-1.0.2.orig/debian/patches/15_sensitive_open.dpatch
+++ wireshark-1.0.2/debian/patches/15_sensitive_open.dpatch
@@ -0,0 +1,24 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 15_sensitive_open.dpatch by  <fpeters@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: don't make the open button unsensitive with the new GtkFileChooser
+## DP: dialog since filename can also be changed from the location bar
+## DP: closes: #439198
+
+@DPATCH@
+diff -urNad wireshark-0.99.6~/gtk/capture_file_dlg.c wireshark-0.99.6/gtk/capture_file_dlg.c
+--- wireshark-0.99.6~/gtk/capture_file_dlg.c	2007-07-05 19:22:28.000000000 +0000
++++ wireshark-0.99.6/gtk/capture_file_dlg.c	2007-08-23 10:09:17.000000000 +0000
+@@ -339,7 +339,11 @@
+ 
+     /* make the open/save/... dialog button sensitive */
+ #if (GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 4) || GTK_MAJOR_VERSION > 2
++    /* don't make the open button unsensitive with the new GtkFileChooser
++     * dialog since filename can also be changed from the location bar */
++    /*
+     gtk_dialog_set_response_sensitive(file_sel, GTK_RESPONSE_ACCEPT, have_preview);
++    */
+ #else
+     gtk_widget_set_sensitive(GTK_FILE_SELECTION(file_sel)->ok_button, have_preview);
+ #endif
--- wireshark-1.0.2.orig/debian/patches/25_security_fixes_from_1.0.5.dpatch
+++ wireshark-1.0.2/debian/patches/25_security_fixes_from_1.0.5.dpatch
@@ -0,0 +1,454 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Backport security fixes from 1.0.5 <jmm@debian.org>
+
+@DPATCH@
+--- trunk/epan/dissectors/packet-smtp.c	2008/04/13 16:21:22	24988
++++ wireshark-1.0.2/epan/dissectors/packet-smtp.c	2008/04/13 16:33:44	24989
+@@ -97,10 +97,6 @@
+ 	"DATA fragments"
+ };
+ 
+-/* Define media_type/Content type table */
+-static dissector_table_t media_type_dissector_table;
+-
+-
+ static  dissector_handle_t imf_handle = NULL;
+ 
+ /*
+@@ -175,6 +171,7 @@
+     gint                    length_remaining;
+     gboolean                eom_seen = FALSE;
+     gint                    next_offset;
++    gint                    loffset;
+     gboolean                is_continuation_line;
+     int                     cmdlen;
+     fragment_data           *frag_msg = NULL;
+@@ -217,21 +214,6 @@
+      * longer than what's in the buffer, so the "tvb_get_ptr()" call
+      * won't throw an exception.
+      */
+-    linelen = tvb_find_line_end(tvb, offset, -1, &next_offset,
+-      smtp_desegment && pinfo->can_desegment);
+-    if (linelen == -1) {
+-      /*
+-       * We didn't find a line ending, and we're doing desegmentation;
+-       * tell the TCP dissector where the data for this message starts
+-       * in the data it handed us, and tell it we need one more byte
+-       * (we may need more, but we'll try again if what we get next
+-       * isn't enough), and return.
+-       */
+-      pinfo->desegment_offset = offset;
+-      pinfo->desegment_len = 1;
+-      return;
+-    }
+-    line = tvb_get_ptr(tvb, offset, linelen);
+ 
+     frame_data = p_get_proto_data(pinfo->fd, proto_smtp);
+ 
+@@ -267,6 +249,42 @@
+ 
+       }
+ 
++      if(request) {
++	frame_data = se_alloc(sizeof(struct smtp_proto_data));
++
++	frame_data->conversation_id = conversation->index;
++	frame_data->more_frags = TRUE;
++
++	p_add_proto_data(pinfo->fd, proto_smtp, frame_data);	
++
++      }
++
++    loffset = offset;
++    while (tvb_offset_exists(tvb, loffset)) {
++
++    linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset,
++      smtp_desegment && pinfo->can_desegment);
++    if (linelen == -1) {
++
++      if(offset == loffset) {
++      /*
++       * We didn't find a line ending, and we're doing desegmentation;
++       * tell the TCP dissector where the data for this message starts
++       * in the data it handed us, and tell it we need one more byte
++       * (we may need more, but we'll try again if what we get next
++       * isn't enough), and return.
++       */
++      pinfo->desegment_offset = loffset;
++      pinfo->desegment_len = 1;
++      return;
++      }
++      else {
++	linelen = tvb_length_remaining(tvb, loffset);
++	next_offset = loffset + linelen;
++      }
++    }
++    line = tvb_get_ptr(tvb, loffset, linelen);
++
+       /*
+        * Check whether or not this packet is an end of message packet
+        * We should look for CRLF.CRLF and they may be split.
+@@ -282,16 +300,16 @@
+ 	 * .CRLF at the begining of the same packet.
+ 	 */
+ 
+-	if ((request_val->crlf_seen && tvb_strneql(tvb, offset, ".\r\n", 3) == 0) ||
+-	    tvb_strneql(tvb, offset, "\r\n.\r\n", 5) == 0) {
++	if ((request_val->crlf_seen && tvb_strneql(tvb, loffset, ".\r\n", 3) == 0) ||
++	    tvb_strneql(tvb, loffset, "\r\n.\r\n", 5) == 0) {
+ 
+ 	  eom_seen = TRUE;
+ 
+-	}
++	} 
+ 
+-	length_remaining = tvb_length_remaining(tvb, offset);
+-	if (length_remaining == tvb_reported_length_remaining(tvb, offset) &&
+-	    tvb_strneql(tvb, offset + length_remaining - 2, "\r\n", 2) == 0) {
++	length_remaining = tvb_length_remaining(tvb, loffset);
++	if (length_remaining == tvb_reported_length_remaining(tvb, loffset) &&
++	    tvb_strneql(tvb, loffset + length_remaining - 2, "\r\n", 2) == 0) {
+ 
+ 	  request_val->crlf_seen = TRUE;
+ 
+@@ -310,11 +328,6 @@
+ 
+       if (request) {
+ 
+-	frame_data = se_alloc(sizeof(struct smtp_proto_data));
+-
+-	frame_data->conversation_id = conversation->index;
+-	frame_data->more_frags = TRUE;
+-
+ 	if (request_val->reading_data) {
+ 	  /*
+ 	   * This is message data.
+@@ -329,6 +342,9 @@
+ 	     */
+ 	    frame_data->pdu_type = SMTP_PDU_EOM;
+ 	    request_val->reading_data = FALSE;
++	    
++	    break;
++	    
+ 	  } else {
+ 	    /*
+ 	     * Message data with no EOM.
+@@ -340,7 +356,7 @@
+ 	       * We are handling a BDAT message.
+ 	       * Check if we have reached end of the data chunk.
+ 	       */
+-	      request_val->msg_read_len += tvb_length_remaining(tvb, offset);
++	      request_val->msg_read_len += tvb_length_remaining(tvb, loffset);
+ 
+               if (request_val->msg_read_len == request_val->msg_tot_len) {
+ 		/* 
+@@ -356,6 +372,8 @@
+ 		   */
+ 		  frame_data->more_frags = FALSE;
+ 		}
++		
++		break; /* no need to go through the remaining lines */
+ 	      }
+ 	    }
+ 	  }
+@@ -446,12 +464,15 @@
+ 	    frame_data->pdu_type = request_val->data_seen ? SMTP_PDU_MESSAGE : SMTP_PDU_CMD;
+ 
+ 	  }
+-
+ 	}
++      }
+ 
+-	p_add_proto_data(pinfo->fd, proto_smtp, frame_data);
++      /*
++       * Step past this line.
++       */
++      loffset = next_offset;
+ 
+-      }
++    }
+     }
+ 
+     /*
+@@ -463,6 +484,7 @@
+       col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMTP");
+ 
+     if (check_col(pinfo->cinfo, COL_INFO)) {  /* Add the appropriate type here */
++      col_clear(pinfo->cinfo, COL_INFO);
+ 
+       /*
+        * If it is a request, we have to look things up, otherwise, just
+@@ -477,21 +499,38 @@
+ 	case SMTP_PDU_MESSAGE:
+ 
+ 	  length_remaining = tvb_length_remaining(tvb, offset);
+-	  col_set_str(pinfo->cinfo, COL_INFO, smtp_data_desegment ? "DATA fragment" : "Message Body");
++	  col_set_str(pinfo->cinfo, COL_INFO, smtp_data_desegment ? "C: DATA fragment" : "C: Message Body");
+ 	  col_append_fstr(pinfo->cinfo, COL_INFO, ", %d byte%s", length_remaining,
+ 			  plurality (length_remaining, "", "s"));
+ 	  break;
+ 
+ 	case SMTP_PDU_EOM:
+ 
+-	  col_add_fstr(pinfo->cinfo, COL_INFO, "EOM: %s",
+-	      format_text(line, linelen));
++	  col_set_str(pinfo->cinfo, COL_INFO, "C: .");
++
+ 	  break;
+ 
+ 	case SMTP_PDU_CMD:
+ 
+-	  col_add_fstr(pinfo->cinfo, COL_INFO, "Command: %s",
+-	      format_text(line, linelen));
++	  loffset = offset;
++	  while (tvb_offset_exists(tvb, loffset)) {
++	    /*
++	     * Find the end of the line.
++	     */
++	    linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
++	    line = tvb_get_ptr(tvb, loffset, linelen);
++
++	    if(loffset == offset) 
++	      col_append_fstr(pinfo->cinfo, COL_INFO, "C: %s",
++			   format_text(line, linelen));
++	    else {
++	      col_append_fstr(pinfo->cinfo, COL_INFO, " | %s",
++			   format_text(line, linelen));
++	    }
++
++	    loffset = next_offset;
++
++	  }
+ 	  break;
+ 
+ 	}
+@@ -499,9 +538,24 @@
+       }
+       else {
+ 
+-	col_add_fstr(pinfo->cinfo, COL_INFO, "Response: %s",
+-	    format_text(line, linelen));
++	  loffset = offset;
++	  while (tvb_offset_exists(tvb, loffset)) {
++	    /*
++	     * Find the end of the line.
++	     */
++	    linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
++	    line = tvb_get_ptr(tvb, loffset, linelen);
++
++	    if(loffset == offset) 
++	      col_append_fstr(pinfo->cinfo, COL_INFO, "S: %s",
++			   format_text(line, linelen));
++	    else {
++	      col_append_fstr(pinfo->cinfo, COL_INFO, " | %s",
++			   format_text(line, linelen));
++	    }
+ 
++	    loffset = next_offset;
++	  }
+       }
+     }
+ 
+@@ -556,8 +610,7 @@
+ 	   * DATA command this terminates before sending another
+ 	   * request, but we should probably handle it.
+ 	   */
+-	  proto_tree_add_text(smtp_tree, tvb, offset, linelen,
+-	      "EOM: %s", format_text(line, linelen));
++	  proto_tree_add_text(smtp_tree, tvb, offset, linelen, "C: .");
+ 
+ 	  if(smtp_data_desegment) {
+ 
+@@ -578,6 +631,15 @@
+ 	   * previous command before sending another request, but we
+ 	   * should probably handle it.
+ 	   */
++
++	  loffset = offset;
++	while (tvb_offset_exists(tvb, loffset)) {
++
++	  /*
++	   * Find the end of the line.
++	   */
++	  linelen = tvb_find_line_end(tvb, loffset, -1, &next_offset, FALSE);
++
+ 	  if (linelen >= 4)
+ 	    cmdlen = 4;
+ 	  else
+@@ -587,16 +649,16 @@
+ 	  /*
+ 	   * Put the command line into the protocol tree.
+ 	   */
+-	  ti = proto_tree_add_text(smtp_tree, tvb, offset, next_offset - offset,
++	  ti = proto_tree_add_text(smtp_tree, tvb, loffset, next_offset - loffset,
+ 	        "Command: %s",
+-		tvb_format_text(tvb, offset, next_offset - offset));
++		tvb_format_text(tvb, loffset, next_offset - loffset));
+ 	  cmdresp_tree = proto_item_add_subtree(ti, ett_smtp_cmdresp);
+ 
+ 	  proto_tree_add_item(cmdresp_tree, hf_smtp_req_command, tvb,
+-			      offset, cmdlen, FALSE);
++			      loffset, cmdlen, FALSE);
+ 	  if (linelen > 5) {
+ 	    proto_tree_add_item(cmdresp_tree, hf_smtp_req_parameter, tvb,
+-				offset + 5, linelen - 5, FALSE);
++				loffset + 5, linelen - 5, FALSE);
+ 	  }
+ 
+ 	  if (smtp_data_desegment && !frame_data->more_frags) {
+@@ -605,6 +667,13 @@
+ 	    frag_msg = fragment_end_seq_next (pinfo, frame_data->conversation_id, smtp_data_segment_table,
+ 					      smtp_data_reassembled_table);
+ 	  }
++
++	  /*
++	   * Step past this line.
++	   */
++	  loffset = next_offset;
++	  
++	}
+ 	}
+ 
+ 	if (smtp_data_desegment) {
+@@ -689,8 +758,8 @@
+ 	  /*
+ 	   * If it's not a continuation line, quit.
+ 	   */
+-	  if (!is_continuation_line)
+-	    break;
++	  /* if (!is_continuation_line)
++	     break; */
+ 
+ 	}
+ 
+@@ -771,7 +840,6 @@
+   };
+   module_t *smtp_module;
+ 
+-
+   proto_smtp = proto_register_protocol("Simple Mail Transfer Protocol",
+ 				       "SMTP", "smtp");
+ 
+@@ -808,11 +876,6 @@
+   dissector_add("tcp.port", TCP_PORT_SMTP, smtp_handle);
+   dissector_add("tcp.port", TCP_PORT_SUBMISSION, smtp_handle);
+ 
+-  /*
+-   * Get the content type and Internet media type table
+-   */
+-  media_type_dissector_table = find_dissector_table("media_type");
+-
+   /* find the IMF dissector */
+   imf_handle = find_dissector("imf");
+ 
+--- trunk/epan/dissectors/packet-wlccp.c	2008/11/07 22:42:34	26733
++++ wireshark-1.0.2/epan/dissectors/packet-wlccp.c	2008/11/08 00:07:43	26734
+@@ -660,7 +660,7 @@
+ 	proto_item *ti;
+ 	proto_tree *wlccp_tree, *wlccp_sap_tree, *wlccp_type_tree;
+ 
+-	guint offset = 0;
++	guint offset = 0, old_offset;
+ 
+ 	guint8 version=0, sap=0, sap_id=0, sap_version=0;
+ 
+@@ -1002,9 +1002,9 @@
+ 
+ 					while (tvb_length_remaining(tvb,offset) >= 4) 
+ 					{
+-
++						old_offset = offset;
+ 						offset = dissect_wlccp_tlvs(wlccp_tree, tvb, offset, 0);
+-
++						DISSECTOR_ASSERT(offset > old_offset);
+ 					} /* while bytes_left */
+ 
+ ;
+@@ -1712,6 +1712,7 @@
+ 	gint  _group_id=0, _type_id=0;
+ 	guint _length=0;
+ 	guint _tlv_end=0;
++	guint _old_offset;
+ 
+ 
+ 
+@@ -1900,9 +1901,9 @@
+ 
+ 			while (_offset < _tlv_end)
+ 			{
+-
++				_old_offset = _offset;
+ 				_offset = dissect_wlccp_tlvs(_tlv_tree, _tvb, _offset, _depth++);
+-
++				DISSECTOR_ASSERT(_offset > _old_offset);
+ 			} /* while bytes_left >= 4*/
+ 
+ 		} /* _container_flag && (tvb_length_remaining(_tvb,_offset) >= 4) */
+@@ -1956,8 +1957,8 @@
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+ 
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 			break;
+ 		} /* case default for tlv_group_id=0x00  */
+@@ -2115,8 +2116,8 @@
+ 		{
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 			break;
+ 		} /* default case for switch (_type_id) */
+@@ -2655,8 +2656,8 @@
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+ 
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 		break;
+ 		} /* case default  */
+@@ -2678,8 +2679,8 @@
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+ 
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 			break;
+ 		} /* default case for switch (_type_id) */
+@@ -2879,8 +2880,8 @@
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+ 
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 			break;
+ 		} /* default case for switch (_type_id) */
+@@ -2904,8 +2905,8 @@
+ 		/* for unknown types, just add them to the tree as a blob */
+ 			proto_item_append_text(_ti, "     Unknown");
+ 
+-			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length-4, FALSE);
+-			_offset += _length-4;
++			proto_tree_add_item(_tree, hf_wlccp_tlv_unknown_value, _tvb, _offset, _length, FALSE);
++			_offset += _length;
+ 
+ 			break;
+ 		} /* default case for switch (_type_id) */
