[or-cvs] r9506: (Hopefully) final changes for 0.1.2.7-alpha: disable checkin (in tor/trunk: . src/or)

nickm at seul.org nickm at seul.org
Wed Feb 7 05:11:02 UTC 2007


Author: nickm
Date: 2007-02-07 00:10:58 -0500 (Wed, 07 Feb 2007)
New Revision: 9506

Modified:
   tor/trunk/
   tor/trunk/ChangeLog
   tor/trunk/src/or/main.c
Log:
 r11676 at catbus:  nickm | 2007-02-07 00:10:00 -0500
 (Hopefully) final changes for 0.1.2.7-alpha: disable checking for whether the user account in question exists on --service install, since that seems to make windows go boom.  We can figure out why later.  Also, let the admin specify a password for the target user.



Property changes on: tor/trunk
___________________________________________________________________
 svk:merge ticket from /tor/trunk [r11676] on 8246c3cf-6607-4228-993b-4d95d33730f1

Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2007-02-07 03:40:06 UTC (rev 9505)
+++ tor/trunk/ChangeLog	2007-02-07 05:10:58 UTC (rev 9506)
@@ -18,7 +18,7 @@
   o Major bugfixes (NT services):
     - Install as NT_AUTHORITY\LocalService rather than as SYSTEM; add a
       command-line flag so that admins can override the default by saying
-      "tor --service install --user "SomeUser"".  This will not effect
+      "tor --service install --user "SomeUser"".  This will not affect
       existing installed services.  Also, warn the user that the service
       will look for its configuration file in the service user's
       %appdata% directory.  (We can't do the 'hardwire the user's appdata

Modified: tor/trunk/src/or/main.c
===================================================================
--- tor/trunk/src/or/main.c	2007-02-07 03:40:06 UTC (rev 9505)
+++ tor/trunk/src/or/main.c	2007-02-07 05:10:58 UTC (rev 9506)
@@ -2122,7 +2122,7 @@
   smartlist_free(sl);
 
   /* Allocate a string for the NT service command line */
-  cmdlen = strlen(tor_exe) + strlen(options) + 32;
+  cmdlen = strlen(tor_exe) + (options?strlen(options):0) + 32;
   command = tor_malloc(cmdlen);
 
   /* Format the service command */
@@ -2161,6 +2161,7 @@
   char *command;
   char *errmsg;
   const char *user_acct = GENSRV_USERACCT;
+  const char *password = "";
   int i;
   OSVERSIONINFOEX info;
   SID_NAME_USE sidUse;
@@ -2180,11 +2181,16 @@
     service_fns.CloseServiceHandle_fn(hSCManager);
     return -1;
   }
+
   for (i=1; i < argc; ++i) {
     if (!strcmp(argv[i], "--user") && i+1<argc) {
       user_acct = argv[i+1];
       ++i;
     }
+    if (!strcmp(argv[i], "--password") && i+1<argc) {
+      password = argv[i+1];
+      ++i;
+    }
   }
 
   /* Compute our version and see whether we're running win2k or earlier. */
@@ -2215,11 +2221,12 @@
       printf("Running on a Post-Win2K OS, so we'll assume that the "
              "LocalService account exists.\n");
     }
-  } else if (service_fns.LookupAccountNameA_fn(NULL, // On this system
+  } else if (0 && service_fns.LookupAccountNameA_fn(NULL, // On this system
                             user_acct,
                             NULL, &sidLen, // Don't care about the SID
                             NULL, &domainLen, // Don't care about the domain
                             &sidUse) == 0) {
+    /* XXXX012 For some reason, the above test segfaults. Fix that. */
     printf("User \"%s\" doesn't seem to exist.\n", user_acct);
     return -1;
   } else {
@@ -2239,8 +2246,8 @@
                                 GENSRV_DISPLAYNAME,
                                 SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
                                 SERVICE_AUTO_START, SERVICE_ERROR_IGNORE,
-                                command,
-                                NULL, NULL, NULL, user_acct, "")) == NULL) {
+                                command, NULL, NULL, NULL,
+                                user_acct, password)) == NULL) {
     errmsg = nt_strerror(GetLastError());
     printf("CreateService() failed : %s\n", errmsg);
     service_fns.CloseServiceHandle_fn(hSCManager);
@@ -2248,6 +2255,7 @@
     tor_free(command);
     return -1;
   }
+  printf("Done with CreateService.\n");
 
   /* Set the service's description */
   sdBuff.lpDescription = GENSRV_DESCRIPTION;



More information about the tor-commits mailing list