screen-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[screen-devel] [bug #61534] long session names break screen with no erro


From: Alexander Naumov
Subject: [screen-devel] [bug #61534] long session names break screen with no error message/rails
Date: Mon, 10 Jan 2022 19:03:03 -0500 (EST)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0

Update of bug #61534 (project screen):

             Assigned to:                    None => anaumov                
         Planned Release:                    None => 4.9.0                  

    _______________________________________________________

Follow-up Comment #1:

Try this:


diff --git a/src/screen.c b/src/screen.c
index 1a22892..85959b1 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -778,6 +778,10 @@ int main(int ac, char** av)
               if (--ac == 0)
                 exit_with_usage(myname, "Specify session-name with -S",
NULL);
               SockMatch = *++av;
+              debug1("SockMatch: '%s'\n", SockMatch);
+              debug1("SockMatch len: '%d'\n", (int)strlen(SockMatch));
+              if (strlen(SockMatch) > 80)
+                exit_with_usage(myname, "Session-name is too long (max length
is 80 symbols)", NULL);
             }
             if (!*SockMatch)
               exit_with_usage(myname, "Empty session-name?", NULL);
@@ -1203,6 +1207,13 @@ int main(int ac, char** av)
     SetTtyname(false, &st);
     if (!*av)
       Panic(0, "Please specify a command.");
+    if (!strcmp("sessionname", *av)) {
+      if (!*++av)
+        Panic(0, "Please specify a parameter.");
+      if (strlen(*av) > 80)
+        Panic(0, "Parameter of command 'sessionname' is too long.");
+    }
+    *--av;
     SET_GUID();
     SendCmdMessage(sty, SockMatch, av, queryflag >= 0);
     exit(0);



That's what I get:

$ ./screen -ls
No Sockets found in /tmp/uscreens/S-alex.

$ ./screen -S
averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-d -m bash -c 'ping -c 600 localhost'
Use: ./screen [-opts] [cmd [args]]
 or: ./screen -r [host.tty]

Options:
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-ls [match]   or
-list         Do nothing, just list our SockDir [on possible matches].
-L            Turn on output logging.
-Logfile file Set logfile name.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-Q            Commands will send the response to the stdout of the querying
process.
-r [session]  Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.09.00 (GNU) 07-Jan-22".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute <cmd> as a screen command in the specified session.

Error: Session-name is too long (max length is 80 symbols)
$ echo $?
1

> ./screen -ls
No Sockets found in /tmp/uscreens/S-alex.

> ./screen -S averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-d -m bash -c 'ping -c 600 localhost'

$ ./screen -ls
There is a screen on:
        19381.averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
(Detached)
1 Socket in /tmp/uscreens/S-alex.

$ ./screen -r
averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

... I see the ping cmd... press Ctrl-C...

[screen is terminating]

$ echo $?
0



and the second case:


$ ./screen -ls
No Sockets found in /tmp/uscreens/S-alex.

$ ./screen -S shortname -d -m bash -c 'ping -c 600 localhost'

$ ./screen -ls
There is a screen on:
        19318.shortname(Detached)
1 Socket in /tmp/uscreens/S-alex.

$ ./screen -S shortname -X sessionname
averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Parameter of command 'sessionname' is too long.

$ echo $?
1

$ ./screen -S shortname -X sessionname
averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

$ echo $?
0

$ ./screen -ls
There is a screen on:
        19318.averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
(Detached)
1 Socket in /tmp/uscreens/S-alex.

$ ./screen -r
19318.averyverylongsesssionnameaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

... I see ping again... press Ctrl-C...

[screen is terminating]


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?61534>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]