chiark / gitweb /
1) If we reject a remote user management operation, we log it.
authorRichard Kettlewell <rjk@greenend.org.uk>
Tue, 29 Apr 2008 17:43:42 +0000 (18:43 +0100)
committerRichard Kettlewell <rjk@greenend.org.uk>
Tue, 29 Apr 2008 17:43:42 +0000 (18:43 +0100)
2) Remote fetching of 'rights' is always allowed, since clients depend
   on being able to discover what they can do and this isn't a serious
   information leak.

server/server.c

index 90aaa7749a4aae9fbbabf2bd19fb2b96135462f7..3d593987264018a1b0a9e6b4aafa62f83a1ee0b1 100644 (file)
@@ -1097,6 +1097,7 @@ static int c_adduser(struct conn *c,
   const char *rights;
 
   if(!config->remote_userman && !(c->rights & RIGHT__LOCAL)) {
+    error(0, "S%x: remote adduser", c->tag);
     sink_writes(ev_writer_sink(c->w), "550 Remote user management is disabled\n");
     return 1;
   }
@@ -1122,6 +1123,7 @@ static int c_deluser(struct conn *c,
   struct conn *d;
 
   if(!config->remote_userman && !(c->rights & RIGHT__LOCAL)) {
+    error(0, "S%x: remote deluser", c->tag);
     sink_writes(ev_writer_sink(c->w), "550 Remote user management is disabled\n");
     return 1;
   }
@@ -1143,6 +1145,7 @@ static int c_edituser(struct conn *c,
   struct conn *d;
 
   if(!config->remote_userman && !(c->rights & RIGHT__LOCAL)) {
+    error(0, "S%x: remote edituser", c->tag);
     sink_writes(ev_writer_sink(c->w), "550 Remote user management is disabled\n");
     return 1;
   }
@@ -1184,7 +1187,12 @@ static int c_userinfo(struct conn *c,
   struct kvp *k;
   const char *value;
 
-  if(!config->remote_userman && !(c->rights & RIGHT__LOCAL)) {
+  /* We allow remote querying of rights so that clients can figure out what
+   * they're allowed to do */
+  if(!config->remote_userman
+     && !(c->rights & RIGHT__LOCAL)
+     && strcmp(vec[1], "rights")) {
+    error(0, "S%x: remote userinfo %s %s", c->tag, vec[0], vec[1]);
     sink_writes(ev_writer_sink(c->w), "550 Remote user management is disabled\n");
     return 1;
   }