compile error for drsblob
Matthieu Patou
mat+Informatique.Samba at matws.net
Tue Apr 20 12:09:36 MDT 2010
Not anymore thanks to kamenin for pointing me the update in master.
On 20/04/2010 11:36, Matthias Dieter Wallnöfer wrote:
> Is this still an issue?
>
> Matthias
>
> Matthieu Patou wrote:
>> Hello Metze,
>>
>> I tried to create a python lib for drs object manipulation and
>> received this error :
>> [1228/1933] Compiling default/librpc/gen_ndr/py_drsblobs.c
>> default/librpc/gen_ndr/py_drsblobs.c: In function
>> ‘py_package_PrimaryKerberosString_get_string’:
>> default/librpc/gen_ndr/py_drsblobs.c:3188: warning: passing argument
>> 1 of ‘PyString_FromString’ makes pointer from integer without a cast
>> /usr/include/python2.6/stringobject.h:63: note: expected ‘const char
>> *’ but argument is of type ‘char’
>> default/librpc/gen_ndr/py_drsblobs.c: In function
>> ‘py_package_PrimaryKerberosString_set_string’:
>> default/librpc/gen_ndr/py_drsblobs.c:3196: warning: passing argument
>> 1 of ‘_talloc_free’ discards qualifiers from pointer target type
>> ../../lib/talloc/talloc.h:212: note: expected ‘void *’ but argument
>> is of type ‘const char *’
>> default/librpc/gen_ndr/py_drsblobs.c:3201: error: assignment of
>> read-only location ‘*object->string’
>> compilation terminated due to -Wfatal-errors.
>> Waf: Leaving directory `/usr/local/src/samba4/source4/bin'
>> Build failed: -> task failed (err #1):
>> {task: cc py_drsblobs.c -> py_drsblobs_146.o}
>> make: *** [all] Erreur 1
>>
>> After some investigation I have the impression that something is not
>> ok ... but I don't really know how to fix it so that's why I ask you :-)
>>
>> the generated code is
>>
>> static int py_package_PrimaryKerberosString_set_string(PyObject
>> *py_obj, PyObject *value, void *closure)
>> {
>> struct package_PrimaryKerberosString *object = (struct
>> package_PrimaryKerberosString *)py_talloc_get_ptr(py_obj);
>> talloc_free(object->string);
>> if (value == Py_None) {
>> object->string = NULL;
>> } else {
>> object->string = talloc_ptrtype(py_talloc_get_mem_ctx(py_obj),
>> object->string);
>> *object->string = talloc_strdup(py_talloc_get_mem_ctx(py_obj),
>> PyString_AsString(value));
>> }
>> return 0;
>> }
>>
>> and
>>
>> struct package_PrimaryKerberosString {
>> uint16_t length;/* [value(2*strlen_m(string))] */
>> uint16_t size;/* [value(2*strlen_m(string))] */
>> const char * string;/*
>> [relative,subcontext_size(size),subcontext(0),flag(LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING)]
>> */
>> };
>>
>> It seems a bit wrong as if the object is a char* then we should do
>> object->string = ...
>> My understanding is that the pidl is doing it wrong as we have
>> *string and as string is already a char* then we should get a char**,
>> but the fix in pidl is not obvious and I'm not sure that the analysis
>> is correct.
>>
>> What do you think ?
>> Matthieu.
>>
>
More information about the samba-technical
mailing list