libndr: give an error when ndr_push_relative_ptr2_start()/_end() is used with the...
[abartlet/samba.git/.git] / librpc / ndr / ndr.c
index 4e584e102bf629a45392a1ca07b2dd02ecd55e5c..0ff43c3eb4595a9a2e8e9d1f40ad6e5dc2489a10 100644 (file)
@@ -1160,7 +1160,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");
 }
 
 /*