File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of '*ctx' is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
new ref from call to PyObject_GetAttrString allocated at: ctx = PyObject_GetAttrString(self, "_ctx");
ob_refcnt is now refs: 1 + N where N >= 0
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of '*ctx' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 5 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from call to PyObject_GetAttrString is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
new ref from call to PyObject_GetAttrString allocated at: tmp = PyObject_GetAttrString(auth_context, "_ac");
ob_refcnt is now refs: 1 + N where N >= 0
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from call to PyObject_GetAttrString is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 17 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of '*princtmp' is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
new ref from (unknown) make_principal allocated at: if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
ob_refcnt is now refs: 1 + N where N >= 0
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of '*princtmp' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 3 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from (unknown) make_authdata_list is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
new ref from (unknown) make_authdata_list allocated at: tmp = Py_BuildValue("(iOOOOOO)",
ob_refcnt is now refs: 1 + N where N >= 0
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from (unknown) make_authdata_list is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 3 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from (unknown) make_address_list is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
new ref from (unknown) make_address_list allocated at: tmp = Py_BuildValue("(iOOOOOO)",
ob_refcnt is now refs: 1 + N where N >= 0
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from (unknown) make_address_list is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 3 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from (unknown) make_ticket_times is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
new ref from (unknown) make_ticket_times allocated at: tmp = Py_BuildValue("(iOOOOOO)",
ob_refcnt is now refs: 1 + N where N >= 0
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from (unknown) make_ticket_times is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 3 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from (unknown) make_keyblock is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() fails
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() fails
new ref from (unknown) make_keyblock allocated at: tmp = Py_BuildValue("(iOOOOOO)",
ob_refcnt is now refs: 1 + N where N >= 0
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from (unknown) make_keyblock is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 2 similar trace(s) to this
File: | krb5module.c |
Function: | Context_rd_req |
Error: | ob_refcnt of new ref from (unknown) make_transited is 1 too high |
871 static PyObject*
872 Context_rd_req(PyObject *unself, PyObject *args, PyObject *kw)
873 {
874 krb5_context kctx = NULL;
875 PyObject *ctx, *retval, *self, *server = NULL, *keytab = NULL, *tmp, *auth_context = NULL;
876 krb5_auth_context ac_out = NULL;
877 krb5_data inbuf;
878 krb5_keytab kt = NULL;
879 krb5_principal pserver = NULL;
880 krb5_flags ap_req_options = 0;
881 krb5_error_code rc = 0;
882 krb5_ticket *ticket = NULL;
883 int free_keytab = 0;
884 static const char *kwlist[] = {"self", "in_data", "options", "server", "keytab", "auth_context", NULL};
885
886 if(!PyArg_ParseTupleAndKeywords(args, kw, "Oz#|iOOO:rd_req", (char **)kwlist,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
887 &self, &inbuf.data, &inbuf.length, &ap_req_options, &server, &keytab, &auth_context))
888 return NULL;
889
890 ctx = PyObject_GetAttrString(self, "_ctx");
when PyObject_GetAttrString() succeeds
891 kctx = PyCObject_AsVoidPtr(ctx);
when PyCObject_AsVoidPtr() returns
892
893 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:893
taking False path
894
895 if(auth_context)
taking True path
896 {
897 tmp = PyObject_GetAttrString(auth_context, "_ac");
when PyObject_GetAttrString() succeeds
898 ac_out = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
899 }
900
901 if(keytab == Py_None)
taking False path
902 {
903 PyObject *subargs;
904 subargs = Py_BuildValue("(O)", self);
905 keytab = Context_kt_default(unself, subargs, NULL);
906 Py_DECREF(subargs);
907 free_keytab = 1;
908 }
909 if(keytab)
taking True path
910 {
911 tmp = PyObject_GetAttrString(keytab, "_keytab");
when PyObject_GetAttrString() succeeds
912 kt = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
913 if(free_keytab)
taking False path
914 {
915 Py_DECREF(keytab);
916 }
917 }
918
919 if(server)
taking True path
920 {
921 tmp = PyObject_GetAttrString(server, "_princ");
when PyObject_GetAttrString() succeeds
922 pserver = PyCObject_AsVoidPtr(tmp);
when PyCObject_AsVoidPtr() returns
923 }
924
925 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:925
taking False path
926
927 rc = krb5_rd_req(kctx, &ac_out, &inbuf, pserver, kt, &ap_req_options, &ticket);
928 if(rc)
when considering value == (krb5_error_code)0 from krb5module.c:927
taking False path
929 return pk_error(rc);
930
931 retval = PyTuple_New(ticket->enc_part2?4:3);
when treating unknown struct krb5_ticket * * from krb5module.c:927 as non-NULL
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:931 as non-NULL
taking True path
when PyTuple_New() succeeds
932 if(auth_context)
taking True path
933 {
934 Py_INCREF(auth_context);
935 }
936 else
937 {
938 PyObject *subargs, *mykw = NULL, *otmp;
939
940 subargs = Py_BuildValue("()");
941 mykw = PyDict_New();
942 PyDict_SetItemString(mykw, "context", self);
943 otmp = PyCObject_FromVoidPtrAndDesc(ac_out, kctx, destroy_ac);
944 PyDict_SetItemString(mykw, "ac", otmp);
945 auth_context = PyEval_CallObjectWithKeywords(auth_context_class, subargs, mykw);
946 Py_DECREF(otmp);
947 Py_DECREF(subargs);
948 Py_XDECREF(mykw);
949 }
950 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:950
taking False path
951
952 PyTuple_SetItem(retval, 0, auth_context);
when PyTuple_SetItem() succeeds
953 PyTuple_SetItem(retval, 1, PyInt_FromLong(ap_req_options));
when PyInt_FromLong() succeeds
when PyTuple_SetItem() succeeds
954 if(!(tmp = make_principal(self, kctx, ticket->server)))
when make_principal() succeeds
taking False path
955 {
956 Py_DECREF(retval);
957 krb5_free_ticket(kctx, ticket);
958 return NULL;
959 }
960
961 PyTuple_SetItem(retval, 2, tmp);
when PyTuple_SetItem() succeeds
962
963 if(ticket->enc_part2)
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:963 as non-NULL
taking True path
964 {
965 PyObject *princtmp;
966
967 if(!(princtmp = make_principal(self, kctx, ticket->enc_part2->client)))
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:967 as non-NULL
when make_principal() succeeds
taking False path
968 {
969 Py_DECREF(retval);
970 krb5_free_ticket(kctx, ticket);
971 return NULL;
972 }
973
974 tmp = Py_BuildValue("(iOOOOOO)",
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:981 as non-NULL
when make_authdata_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:980 as non-NULL
when make_address_list() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:979 as non-NULL
when make_ticket_times() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:978 as non-NULL
when make_transited() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:976 as non-NULL
when make_keyblock() succeeds
when treating unknown struct krb5_enc_tkt_part * from krb5module.c:975 as non-NULL
when Py_BuildValue() succeeds
new ref from (unknown) make_transited allocated at: tmp = Py_BuildValue("(iOOOOOO)",
ob_refcnt is now refs: 1 + N where N >= 0
ob_refcnt is now refs: 1 + N where N >= 1
975 ticket->enc_part2->flags,
976 make_keyblock(ticket->enc_part2->session),
977 princtmp,
978 make_transited(&ticket->enc_part2->transited),
979 make_ticket_times(&ticket->enc_part2->times),
980 make_address_list(ticket->enc_part2->caddrs, 0),
981 make_authdata_list(ticket->enc_part2->authorization_data));
982 PyTuple_SetItem(retval, 3, tmp);
when PyTuple_SetItem() succeeds
983 }
984 krb5_free_ticket(kctx, ticket);
985
986 assert(!check_obj(args));
when considering value == (int)0 from krb5module.c:986
taking False path
987
988 return retval;
989 } /* KrbV.Context.rd_req() */
ob_refcnt of new ref from (unknown) make_transited is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 2 similar trace(s) to this