set "key does not exist" response to reg_query_val() (win32 status code
authorLuke Leighton <lkcl@samba.org>
Thu, 18 Nov 1999 22:03:47 +0000 (22:03 +0000)
committerLuke Leighton <lkcl@samba.org>
Thu, 18 Nov 1999 22:03:47 +0000 (22:03 +0000)
of 0x2).  [p.s. getting REALLY bored of this nt5rc2->samba domain stuff].
(This used to be commit a8801942f72b2394a54e4a46546029fac70efeed)

source3/include/proto.h
source3/lib/util_hnd.c
source3/rpc_server/srv_lsa_hnd.c
source3/rpc_server/srv_reg.c
source3/smbd/server.c

index 43780df9f82333e7805ab3cf274396373a872db5..38f868ef00e1690e83d68131200fc6358a74cda6 100644 (file)
@@ -3334,6 +3334,7 @@ BOOL set_lsa_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
 BOOL get_lsa_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
 uint32 get_lsa_policy_samr_rid(POLICY_HND *hnd);
 BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name);
+BOOL get_lsa_policy_reg_name(POLICY_HND *hnd, fstring name);
 BOOL close_lsa_policy_hnd(POLICY_HND *hnd);
 
 /*The following definitions come from  rpc_server/srv_netlog.c  */
index dabc5520ff2c7136019eb0bb769d41eb2e6051c4..d53264a73e1ca6d16bd819aa02a123194b69e093 100644 (file)
@@ -271,9 +271,10 @@ BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
 {
        struct policy *p = find_lsa_policy(hnd);
 
-       if (p && p->open) {
-               DEBUG(3,("Setting policy pnum=%x name=%s\n",
-                        p->pnum, name));
+       if (p && p->open)
+       {
+               DEBUG(3,("Getting policy pnum=%x\n",
+                        p->pnum));
 
                fstrcpy(p->dev.reg.name, name);
                return True;
@@ -283,6 +284,27 @@ BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
        return False;
 }
 
+/****************************************************************************
+  set reg name 
+****************************************************************************/
+BOOL get_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
+{
+       struct policy *p = find_lsa_policy(hnd);
+
+       if (p && p->open)
+       {
+               DEBUG(3,("Setting policy pnum=%x name=%s\n",
+                        p->pnum, name));
+
+               fstrcpy(name, p->dev.reg.name);
+               DEBUG(5,("getting policy reg name=%s\n", name));
+               return True;
+       }
+
+       DEBUG(3,("Error getting policy reg name\n"));
+       return False;
+}
+
 /****************************************************************************
   close an lsa policy
 ****************************************************************************/
index dabc5520ff2c7136019eb0bb769d41eb2e6051c4..d53264a73e1ca6d16bd819aa02a123194b69e093 100644 (file)
@@ -271,9 +271,10 @@ BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
 {
        struct policy *p = find_lsa_policy(hnd);
 
-       if (p && p->open) {
-               DEBUG(3,("Setting policy pnum=%x name=%s\n",
-                        p->pnum, name));
+       if (p && p->open)
+       {
+               DEBUG(3,("Getting policy pnum=%x\n",
+                        p->pnum));
 
                fstrcpy(p->dev.reg.name, name);
                return True;
@@ -283,6 +284,27 @@ BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
        return False;
 }
 
+/****************************************************************************
+  set reg name 
+****************************************************************************/
+BOOL get_lsa_policy_reg_name(POLICY_HND *hnd, fstring name)
+{
+       struct policy *p = find_lsa_policy(hnd);
+
+       if (p && p->open)
+       {
+               DEBUG(3,("Setting policy pnum=%x name=%s\n",
+                        p->pnum, name));
+
+               fstrcpy(name, p->dev.reg.name);
+               DEBUG(5,("getting policy reg name=%s\n", name));
+               return True;
+       }
+
+       DEBUG(3,("Error getting policy reg name\n"));
+       return False;
+}
+
 /****************************************************************************
   close an lsa policy
 ****************************************************************************/
index 18781d0cd0441dda81735424003b961155501279..10b9bac90c5c1ecda32858af15c3c5b4836da4a5 100644 (file)
@@ -187,23 +187,32 @@ static void reg_reply_info(REG_Q_INFO *q_u,
        uint32 status     = 0;
 
        REG_R_INFO r_u;
-       uint32 type = 1;
+       uint32 type = 0xcafeface;
        BUFFER2 buf;
+       fstring name;
+
+       ZERO_STRUCT(buf);
 
        DEBUG(5,("reg_info: %d\n", __LINE__));
 
-       if (status == 0 && find_lsa_policy_by_hnd(&(q_u->pol)) == -1)
+       if (status == 0x0 && !get_lsa_policy_reg_name(&q_u->pol, name))
        {
                status = 0xC000000 | NT_STATUS_INVALID_HANDLE;
        }
 
-       if (status == 0)
+       if (status == 0 &&
+          strequal(name, "SYSTEM\\CurrentControlSet\\Control\\ProductOptions"))
        {
                char *key = "LanmanNT";
                make_buffer2(&buf, key, strlen(key));
-               make_reg_r_info(&r_u, &type, &buf, status);
+               type = 0x1;
+       }
+       else
+       {
+               status = 0x2; /* Win32 status code.  ick */
        }
 
+       make_reg_r_info(&r_u, &type, &buf, status);
 
        /* store the response in the SMB stream */
        reg_io_r_info("", &r_u, rdata, 0);
index c59e189a9dbe72f978a62f72b1d675ee5d1b69b2..590d8533b3a563e82ee631bc2470031a82b2294a 100644 (file)
@@ -125,6 +125,8 @@ static BOOL open_sockets(BOOL is_daemon,int port,int port445)
        int s;
        int i;
 
+       memset(&fd_listenset, 0, sizeof(fd_listenset));
+
        if (!is_daemon) {
                return open_sockets_inetd();
        }
@@ -186,11 +188,13 @@ max can be %d\n",
                        return(False);
                fd_listenset[0] = s;
                FD_SET(s,&listen_set);
+#if 0
                s = open_server_socket(port445, interpret_addr(lp_socket_address()));
                if (s == -1)
                        return(False);
                fd_listenset[1] = s;
                FD_SET(s,&listen_set);
+#endif
        } 
 
        /* now accept incoming connections - forking a new process
@@ -221,11 +225,13 @@ max can be %d\n",
                                        ClientPort = SMB_PORT;
                                        break;
                                }
+#if 0
                                if(FD_ISSET(fd_listenset[i * 2 + 1],&lfds)) {
                                        s = fd_listenset[i * 2 + 1];
                                        ClientPort = SMB_PORT2;
                                        break;
                                }
+#endif
                        }
 
                        /* Clear this so we don't look