[9657] in Athena Bugs

home help back first fref pref prev next nref lref last post

Moira server: client argument checking

daemon@ATHENA.MIT.EDU (Richard Basch)
Sat Jul 18 16:26:09 1992

Date: Sat, 18 Jul 92 16:25:52 -0400
To: bug-moira@MIT.EDU
Cc: bugs@MIT.EDU
From: "Richard Basch" <basch@MIT.EDU>


I believe the following can help to prevent the crash dump that resulted
the other night...

-R


*** /tmp/,RCSt1gb4Bp4	Sat Jul 18 16:24:29 1992
--- server/mr_scall.c	Sat Jul 18 16:24:26 1992
***************
*** 278,296 ****
          cl->reply.mr_status = 0;
          row_count = 0;
  
-         queryname = cl->args->mr_argv[0];
-         
          if (cl->args->mr_version_no == MR_VERSION_2)
            newqueries++;
          else
            oldqueries++;
  
!         if (strcmp(queryname, "_list_users") == 0)
                  cl->reply.mr_status = list_users(retr_callback, (char *)cl);
          else {
                  cl->reply.mr_status = 
                          mr_process_query(cl,
!                                           cl->args->mr_argv[0],
                                            cl->args->mr_argc-1,
                                            cl->args->mr_argv+1,
                                            retr_callback,
--- 278,296 ----
          cl->reply.mr_status = 0;
          row_count = 0;
  
          if (cl->args->mr_version_no == MR_VERSION_2)
            newqueries++;
          else
            oldqueries++;
  
!         if (cl->args->mr_argc < 1)
!                 cl->reply.mr_status = MR_ARGS;
!         else if (strcmp(queryname = cl->args->mr_argv[0], "_list_users") == 0)
                  cl->reply.mr_status = list_users(retr_callback, (char *)cl);
          else {
                  cl->reply.mr_status = 
                          mr_process_query(cl,
!                                           queryname,
                                            cl->args->mr_argc-1,
                                            cl->args->mr_argv+1,
                                            retr_callback,
***************
*** 310,315 ****
--- 310,318 ----
  {
          cl->reply.mr_argc = 0;
  
+         if (cl->args->mr_argc < 1)
+                 cl->reply.mr_status = MR_ARGS;
+         else
                  cl->reply.mr_status = 
                          mr_check_access(cl,
                                          cl->args->mr_argv[0],

home help back first fref pref prev next nref lref last post