libndr: give an error when ndr_push_relative_ptr2_start()/_end() is used with the...
authorStefan Metzmacher <metze@samba.org>
Wed, 17 Feb 2010 19:27:08 +0000 (20:27 +0100)
committerKarolin Seeger <kseeger@samba.org>
Fri, 19 Feb 2010 13:32:31 +0000 (14:32 +0100)
metze
(cherry picked from commit b5f9c44da55abb28222441a7e064a2a25891981f)
(cherry picked from commit 983ac75b5b1f6bb79df15340c9ea73ed9c69aee2)

librpc/ndr/ndr.c

index 523d7e8c984addfff92adbab4a835e06a31372b0..5f4ce594154b6530e988129122fc7e427fa87719 100644 (file)
@@ -1103,7 +1103,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_relative_ptr2_start(struct ndr_push *ndr, co
        if (p == NULL) {
                return NDR_ERR_SUCCESS;
        }
-       return ndr_push_relative_ptr2(ndr, p);
+       if (!(ndr->flags & LIBNDR_FLAG_RELATIVE_REVERSE)) {
+               return ndr_push_relative_ptr2(ndr, p);
+       }
+
+       return ndr_push_error(ndr, NDR_ERR_RELATIVE,
+                             "ndr_push_relative_ptr2_start RELATIVE_REVERSE flag set, but not supported");
 }
 
 /*