r8261: charset style strings in pidl should be const, just like old style ndr strings
authorAndrew Tridgell <tridge@samba.org>
Sat, 9 Jul 2005 12:51:44 +0000 (12:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:19:27 +0000 (13:19 -0500)
(This used to be commit aa0e1d6699959571963d6e6fb455b33c4436dcdf)

source4/build/pidl/ndr_header.pm
source4/librpc/ndr/ndr_string.c

index 33183cec965b68337d7e9951b2c579aa076ababe..0e0d4f57256f85c1c5492ee938cd7ebe2840ca75 100644 (file)
@@ -214,7 +214,7 @@ sub HeaderType($$$)
        }
 
        if (util::has_property($e, "charset")) {
-               pidl "char";
+               pidl "const char";
        } else {
                pidl typelist::mapType($e->{TYPE});
        }
index 42316a8003c8b2213fb33288f82e29e9f463a51c..11397aaafd048940ececec238c1e73b20c745994 100644 (file)
@@ -590,11 +590,11 @@ void ndr_print_string_array(struct ndr_print *ndr, const char *name, const char
 }
 
 /* Return number of elements in a string including the last (zeroed) element */
-uint32_t ndr_string_length(void *_var, uint32_t element_size)
+uint32_t ndr_string_length(const void *_var, uint32_t element_size)
 {
        uint32_t i;
        uint8_t zero[4] = {0,0,0,0};
-       char *var = _var;
+       const char *var = _var;
 
        for (i = 0; memcmp(var+i*element_size,zero,element_size) != 0; i++);
 
@@ -618,14 +618,14 @@ NTSTATUS ndr_check_string_terminator(struct ndr_pull *ndr, const void *_var, uin
 
 }
 
-NTSTATUS ndr_pull_charset(struct ndr_pull *ndr, int ndr_flags, char **var, uint32_t length, uint8_t byte_mul, int chset)
+NTSTATUS ndr_pull_charset(struct ndr_pull *ndr, int ndr_flags, const char **var, uint32_t length, uint8_t byte_mul, int chset)
 {
        int ret;
        NDR_PULL_NEED_BYTES(ndr, length*byte_mul);
        ret = convert_string_talloc(ndr, chset, CH_UNIX, 
                                    ndr->data+ndr->offset, 
                                    length*byte_mul,
-                                   (void **)var);
+                                   discard_const_p(void *, var));
        if (ret == -1) {
                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                      "Bad character conversion");