@@ -604,6 +604,12 @@ setBuiltins(ProfilerObject *pObj, int nvalue)
604
604
605
605
PyObject * pystart_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
606
606
{
607
+ if (size < 2 ) {
608
+ PyErr_Format (PyExc_TypeError ,
609
+ "_pystart_callback expected 2 arguments, got %zd" ,
610
+ size );
611
+ return NULL ;
612
+ }
607
613
PyObject * code = args [0 ];
608
614
ptrace_enter_call ((PyObject * )self , (void * )code , (PyObject * )code );
609
615
@@ -612,6 +618,12 @@ PyObject* pystart_callback(ProfilerObject* self, PyObject *const *args, Py_ssize
612
618
613
619
PyObject * pyreturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
614
620
{
621
+ if (size < 3 ) {
622
+ PyErr_Format (PyExc_TypeError ,
623
+ "_pyreturn_callback expected 3 arguments, got %zd" ,
624
+ size );
625
+ return NULL ;
626
+ }
615
627
PyObject * code = args [0 ];
616
628
ptrace_leave_call ((PyObject * )self , (void * )code );
617
629
@@ -647,6 +659,12 @@ PyObject* get_cfunc_from_callable(PyObject* callable, PyObject* self_arg, PyObje
647
659
648
660
PyObject * ccall_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
649
661
{
662
+ if (size < 4 ) {
663
+ PyErr_Format (PyExc_TypeError ,
664
+ "_ccall_callback expected 4 arguments, got %zd" ,
665
+ size );
666
+ return NULL ;
667
+ }
650
668
if (self -> flags & POF_BUILTINS ) {
651
669
PyObject * callable = args [2 ];
652
670
PyObject * self_arg = args [3 ];
@@ -665,6 +683,12 @@ PyObject* ccall_callback(ProfilerObject* self, PyObject *const *args, Py_ssize_t
665
683
666
684
PyObject * creturn_callback (ProfilerObject * self , PyObject * const * args , Py_ssize_t size )
667
685
{
686
+ if (size < 4 ) {
687
+ PyErr_Format (PyExc_TypeError ,
688
+ "_creturn_callback expected 4 arguments, got %zd" ,
689
+ size );
690
+ return NULL ;
691
+ }
668
692
if (self -> flags & POF_BUILTINS ) {
669
693
PyObject * callable = args [2 ];
670
694
PyObject * self_arg = args [3 ];
0 commit comments