Merge branch 'master' of ssh://git.samba.org/data/git/samba
authorAndrew Tridgell <tridge@samba.org>
Wed, 3 Dec 2008 06:47:39 +0000 (17:47 +1100)
committerAndrew Tridgell <tridge@samba.org>
Wed, 3 Dec 2008 06:47:39 +0000 (17:47 +1100)
1  2 
source4/lib/ldb/ldb.i
source4/lib/ldb/ldb_wrap.c

diff --combined source4/lib/ldb/ldb.i
index 35d443e809b3cc78d6e28b34c0483fcf42533517,6ecbfbfa08acf08bfc4d1c0fda660b59b9aa7ef9..0f05c1fbab6bfaf66938bb5c0e734ea9d2da96cf
@@@ -190,7 -190,6 +190,7 @@@ PyObject *ldb_val_to_py_object(struct l
  }
  
  %apply const char * const *NULL_STR_LIST { const char * const *attrs }
 +%apply const char * const *NULL_STR_LIST { const char * const *options }
  %apply const char * const *NULL_STR_LIST { const char * const *control_strings }
  
  #endif
@@@ -217,7 -216,7 +217,7 @@@ typedef struct ldb_dn 
                 we do it this way... */
              talloc_steal(NULL, ret);
  
-             if (ret == NULL)
+             if (ret == NULL || !ldb_dn_validate(ret))
                  SWIG_exception(SWIG_ValueError, 
                                  "unable to parse dn string");
  fail:
          {
              char *dn = ldb_dn_get_linearized($self), *ret;
              asprintf(&ret, "Dn('%s')", dn);
-             talloc_free(dn);
              return ret;
          }
  
@@@ -713,10 -711,9 +712,10 @@@ typedef struct ldb_context 
          %feature("docstring") connect "S.connect(url,flags=0,options=None) -> None\n" \
                                        "Connect to a LDB URL.";
          ldb_error connect(const char *url, unsigned int flags = 0, 
 -            const char *options[] = NULL);
 +            const char *const *options = NULL);
  
          ~ldb() { talloc_free($self); }
 +
          ldb_error search_ex(TALLOC_CTX *mem_ctx,
                     ldb_dn *base = NULL, 
                     enum ldb_scope scope = LDB_SCOPE_DEFAULT, 
index 194b562c3023334eda1ebd74eb0167774ff352fe,3cf5ec613a7d5f4dd78cbf3ef41f086efd75da1e..4a34c1c998d981d48f0194341748ec1e92c11d94
@@@ -2732,7 -2732,6 +2732,6 @@@ SWIGINTERN char const *ldb_dn_canonical
  SWIGINTERN char *ldb_dn___repr__(ldb_dn *self){
              char *dn = ldb_dn_get_linearized(self), *ret;
              asprintf(&ret, "Dn('%s')", dn);
-             talloc_free(dn);
              return ret;
          }
  SWIGINTERN ldb_dn *ldb_dn___add__(ldb_dn *self,ldb_dn *other){
@@@ -4823,7 -4822,7 +4822,7 @@@ SWIGINTERN PyObject *_wrap_Ldb_connect(
    ldb *arg1 = (ldb *) 0 ;
    char *arg2 = (char *) 0 ;
    unsigned int arg3 = (unsigned int) 0 ;
 -  char **arg4 = (char **) (char **)NULL ;
 +  char **arg4 = (char **) NULL ;
    void *argp1 = 0 ;
    int res1 = 0 ;
    int res2 ;
    int alloc2 = 0 ;
    unsigned int val3 ;
    int ecode3 = 0 ;
 -  void *argp4 = 0 ;
 -  int res4 = 0 ;
    PyObject * obj0 = 0 ;
    PyObject * obj1 = 0 ;
    PyObject * obj2 = 0 ;
      arg3 = (unsigned int)(val3);
    }
    if (obj3) {
 -    res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_p_char, 0 |  0 );
 -    if (!SWIG_IsOK(res4)) {
 -      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Ldb_connect" "', argument " "4"" of type '" "char const *[]""'"); 
 -    } 
 -    arg4 = (char **)(argp4);
 +    if (obj3 == Py_None) {
 +      arg4 = NULL;
 +    } else if (PySequence_Check(obj3)) {
 +      int i;
 +      arg4 = talloc_array(NULL, char *, PySequence_Size(obj3)+1);
 +      for(i = 0; i < PySequence_Size(obj3); i++)
 +      arg4[i] = PyString_AsString(PySequence_GetItem(obj3, i));
 +      arg4[i] = NULL;
 +    } else {
 +      SWIG_exception(SWIG_TypeError, "expected sequence");
 +    }
    }
    if (arg1 == NULL)
    SWIG_exception(SWIG_ValueError, 
      "ldb context must be non-NULL");
 -  result = ldb_connect(arg1,(char const *)arg2,arg3,(char const *(*))arg4);
 +  result = ldb_connect(arg1,(char const *)arg2,arg3,(char const *const *)arg4);
    if (result != 0) {
      PyErr_SetObject(PyExc_LdbError, Py_BuildValue((char *)"(i,s)", result, ldb_errstring(arg1)));
      SWIG_fail;
    }
    resultobj = Py_None;
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
 +  talloc_free(arg4);
    return resultobj;
  fail:
    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
 +  talloc_free(arg4);
    return NULL;
  }