aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2016-10-23 14:16:39 -0400
committerMark H Weaver <mhw@netris.org>2016-10-23 14:16:39 -0400
commitca0635b4ba1af6f4ef1f54cb13fe6cedd8c5aff3 (patch)
tree1b3e014c4e0398ecb63d1b88ee06b09d0c0c5a56 /gnu/packages/patches
parentf08add0c5a3f1f7200b0a00e17ed880692d2244b (diff)
parent903276d066ab9733c253d2a15b7ae135ef2ef836 (diff)
downloadgnu-guix-ca0635b4ba1af6f4ef1f54cb13fe6cedd8c5aff3.tar
gnu-guix-ca0635b4ba1af6f4ef1f54cb13fe6cedd8c5aff3.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/hop-bigloo-4.0b.patch122
-rw-r--r--gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch81
-rw-r--r--gnu/packages/patches/linux-libre-4.1-CVE-2016-5195.patch99
-rw-r--r--gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch46
-rw-r--r--gnu/packages/patches/openssh-memory-exhaustion.patch39
-rw-r--r--gnu/packages/patches/slim-login.patch35
-rw-r--r--gnu/packages/patches/slim-reset.patch33
7 files changed, 252 insertions, 203 deletions
diff --git a/gnu/packages/patches/hop-bigloo-4.0b.patch b/gnu/packages/patches/hop-bigloo-4.0b.patch
deleted file mode 100644
index 312bfdd117..0000000000
--- a/gnu/packages/patches/hop-bigloo-4.0b.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-Bigloo 4.0b removes `xml-attribute-encode', which leads to a build failure
-in Hop.
-
-This patch allows Hop to be compiled with Bigloo 4.0b.
-
-
-changeset: 3327:3515f7f1aef2
-branch: 2.4.x
-user: Manuel Serrano <Manuel.Serrano@inria.fr>
-date: Wed Jul 31 12:41:10 2013 +0200
-summary: Fix serialization bug
-
-diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/js_comp.scm
---- a/runtime/js_comp.scm Fri Jul 19 08:28:13 2013 +0200
-+++ b/runtime/js_comp.scm Wed Jul 31 12:41:10 2013 +0200
-@@ -143,10 +143,17 @@
- (display "{ " op)
- (display-seq fields op
- (lambda (f op)
-+ (let ((iv (class-field-info f)))
- (display "'" op)
- (display (class-field-name f) op)
- (display "': " op)
-- (compile ((class-field-accessor f) obj) op)))
-+ (cond
-+ ((and (pair? iv) (memq :client iv))
-+ =>
-+ (lambda (x)
-+ (compile (when (pair? (cdr x)) (cadr x)) op)))
-+ (else
-+ (compile ((class-field-accessor f) obj) op))))))
- (display "}" op))
-
- (let ((klass (object-class obj)))
-diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/xml.scm
---- a/runtime/xml.scm Fri Jul 19 08:28:13 2013 +0200
-+++ b/runtime/xml.scm Wed Jul 31 12:41:10 2013 +0200
-@@ -55,6 +55,7 @@
- (generic xml-write-attribute ::obj ::obj ::output-port ::xml-backend)
- (generic xml-write-expression ::obj ::output-port)
- (xml-write-attributes ::pair-nil ::output-port ::xml-backend)
-+ (xml-attribute-encode obj)
-
- (xml->string ::obj ::xml-backend)
-
-@@ -613,6 +614,52 @@
- (display ">" p))))
-
- ;*---------------------------------------------------------------------*/
-+;* xml-attribute-encode ... */
-+;*---------------------------------------------------------------------*/
-+(define (xml-attribute-encode obj)
-+ (if (not (string? obj))
-+ obj
-+ (let ((ol (string-length obj)))
-+ (define (count str ol)
-+ (let loop ((i 0)
-+ (j 0))
-+ (if (=fx i ol)
-+ j
-+ (let ((c (string-ref str i)))
-+ ;; attribute values should escape &#...
-+ (if (or (char=? c #\') (char=? c #\&))
-+ (loop (+fx i 1) (+fx j 5))
-+ (loop (+fx i 1) (+fx j 1)))))))
-+ (define (encode str ol nl)
-+ (if (=fx nl ol)
-+ obj
-+ (let ((nstr (make-string nl)))
-+ (let loop ((i 0)
-+ (j 0))
-+ (if (=fx j nl)
-+ nstr
-+ (let ((c (string-ref str i)))
-+ (case c
-+ ((#\')
-+ (string-set! nstr j #\&)
-+ (string-set! nstr (+fx j 1) #\#)
-+ (string-set! nstr (+fx j 2) #\3)
-+ (string-set! nstr (+fx j 3) #\9)
-+ (string-set! nstr (+fx j 4) #\;)
-+ (loop (+fx i 1) (+fx j 5)))
-+ ((#\&)
-+ (string-set! nstr j #\&)
-+ (string-set! nstr (+fx j 1) #\#)
-+ (string-set! nstr (+fx j 2) #\3)
-+ (string-set! nstr (+fx j 3) #\8)
-+ (string-set! nstr (+fx j 4) #\;)
-+ (loop (+fx i 1) (+fx j 5)))
-+ (else
-+ (string-set! nstr j c)
-+ (loop (+fx i 1) (+fx j 1))))))))))
-+ (encode obj ol (count obj ol)))))
-+
-+;*---------------------------------------------------------------------*/
- ;* xml-write-attributes ... */
- ;*---------------------------------------------------------------------*/
- (define (xml-write-attributes attr p backend)
-diff -r 7244c4d30ad4 -r 3515f7f1aef2 share/hop-serialize.js
---- a/share/hop-serialize.js Fri Jul 19 08:28:13 2013 +0200
-+++ b/share/hop-serialize.js Wed Jul 31 12:41:10 2013 +0200
-@@ -942,7 +942,7 @@
- case 0x2e /* . */: return null;
- case 0x3c /* < */: return read_cnst();
- case 0x22 /* " */: return read_string( s );
-- case 0x25 /* " */: return decodeURIComponent( read_string( s ) );
-+ case 0x25 /* % */: return decodeURIComponent( read_string( s ) );
- case 0x55 /* U */: return read_string( s );
- case 0x5b /* [ */: return read_vector( read_size( s ) );
- case 0x28 /* ( */: return read_list( read_size( s ) );
-diff -r 7244c4d30ad4 -r 3515f7f1aef2 src/main.scm
---- a/src/main.scm Fri Jul 19 08:28:13 2013 +0200
-+++ b/src/main.scm Wed Jul 31 12:41:10 2013 +0200
-@@ -59,8 +59,6 @@
- (for-each register-srfi! (cons 'hop-server (hop-srfis)))
- ;; set the library load path
- (bigloo-library-path-set! (hop-library-path))
-- ;; define the Hop macros
-- (hop-install-expanders!)
- ;; setup the hop readers
- (bigloo-load-reader-set! hop-read)
- (bigloo-load-module-set!
diff --git a/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch b/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch
deleted file mode 100644
index e170d11308..0000000000
--- a/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Fixes "saves unknown host's fingerprint in known_hosts without any prompt".
-See:
-
- https://github.com/lavv17/lftp/issues/116
- https://bugs.debian.org/774769
-
-From bc7b476e782d77839765f56bbdb4cee9f36b54ec Mon Sep 17 00:00:00 2001
-From: "Alexander V. Lukyanov" <lavv17f@gmail.com>
-Date: Tue, 13 Jan 2015 15:33:54 +0300
-Subject: [PATCH] add settings fish:auto-confirm and sftp:auto-confirm
-
-New host keys are now not confirmed by default, this should improve security.
-Suggested by Marcin Szewczyk <Marcin.Szewczyk@wodny.org>
----
- doc/lftp.1 | 8 ++++++++
- src/SSH_Access.cc | 5 +++--
- src/resource.cc | 2 ++
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/doc/lftp.1 b/doc/lftp.1
-index cabc1be..ed6c388 100644
---- a/doc/lftp.1
-+++ b/doc/lftp.1
-@@ -1384,6 +1384,10 @@ address family in dns:order.
- .BR file:charset \ (string)
- local character set. It is set from current locale initially.
- .TP
-+.BR fish:auto-confirm \ (boolean)
-+when true, lftp answers ``yes'' to all ssh questions, in particular to the
-+question about a new host key. Otherwise it answers ``no''.
-+.TP
- .BR fish:charset \ (string)
- the character set used by fish server in requests, replies and file listings.
- Default is empty which means the same as local.
-@@ -1952,6 +1956,10 @@ minimal chunk size to split the file to.
- save pget transfer status this often. Set to `never' to disable saving of the status file.
- The status is saved to a file with suffix \fI.lftp-pget-status\fP.
- .TP
-+.BR sftp:auto-confirm \ (boolean)
-+when true, lftp answers ``yes'' to all ssh questions, in particular to the
-+question about a new host key. Otherwise it answers ``no''.
-+.TP
- .BR sftp:charset \ (string)
- the character set used by SFTP server in file names and file listings.
- Default is empty which means the same as local. This setting is only used
-diff --git a/src/SSH_Access.cc b/src/SSH_Access.cc
-index 706fc6a..17c716d 100644
---- a/src/SSH_Access.cc
-+++ b/src/SSH_Access.cc
-@@ -72,8 +72,9 @@ int SSH_Access::HandleSSHMessage()
- }
- if(s>=y_len && !strncasecmp(b+s-y_len,y,y_len))
- {
-- pty_recv_buf->Put("yes\n");
-- pty_send_buf->Put("yes\n");
-+ const char *answer=QueryBool("auto-confirm",hostname)?"yes\n":"no\n";
-+ pty_recv_buf->Put(answer);
-+ pty_send_buf->Put(answer);
- return m;
- }
- if(!received_greeting && recv_buf->Size()>0)
-diff --git a/src/resource.cc b/src/resource.cc
-index 91b2e60..3a5e8b9 100644
---- a/src/resource.cc
-+++ b/src/resource.cc
-@@ -339,6 +339,7 @@ static ResType lftp_vars[] = {
- {"mirror:no-empty-dirs", "no", ResMgr::BoolValidate,ResMgr::NoClosure},
- {"mirror:require-source", "no", ResMgr::BoolValidate,ResMgr::NoClosure},
-
-+ {"sftp:auto-confirm", "no", ResMgr::BoolValidate,0},
- {"sftp:max-packets-in-flight","16", ResMgr::UNumberValidate,0},
- {"sftp:protocol-version", "6", ResMgr::UNumberValidate,0},
- {"sftp:size-read", "32k", ResMgr::UNumberValidate,0},
-@@ -367,6 +368,7 @@ static ResType lftp_vars[] = {
- {"dns:strict-dnssec", "no", ResMgr::BoolValidate,0},
- #endif
-
-+ {"fish:auto-confirm", "no", ResMgr::BoolValidate,0},
- {"fish:shell", "/bin/sh",0,0},
- {"fish:connect-program", "ssh -a -x",0,0},
- {"fish:charset", "", ResMgr::CharsetValidate,0},
diff --git a/gnu/packages/patches/linux-libre-4.1-CVE-2016-5195.patch b/gnu/packages/patches/linux-libre-4.1-CVE-2016-5195.patch
new file mode 100644
index 0000000000..37a41f61e4
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-4.1-CVE-2016-5195.patch
@@ -0,0 +1,99 @@
+Fix CVE-2016-5195, a.k.a. Dirty COW.
+Backported to linux-libre-4.1.x by Mark H Weaver <mhw@netris.org>.
+
+From 18652320ea99913c95e7130d654be7f1da6b694f Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Thu, 13 Oct 2016 13:07:36 -0700
+Subject: [PATCH] mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
+
+commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 upstream.
+
+This is an ancient bug that was actually attempted to be fixed once
+(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
+get_user_pages() race for write access") but that was then undone due to
+problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
+
+In the meantime, the s390 situation has long been fixed, and we can now
+fix it by checking the pte_dirty() bit properly (and do it better). The
+s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
+software dirty bits") which made it into v3.9. Earlier kernels will
+have to look at the page state itself.
+
+Also, the VM has become more scalable, and what used a purely
+theoretical race back then has become easier to trigger.
+
+To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
+we already did a COW" rather than play racy games with FOLL_WRITE that
+is very fundamental, and then use the pte dirty flag to validate that
+the FOLL_COW flag is still valid.
+
+Reported-and-tested-by: Phil "not Paul" Oester <kernel@linuxace.com>
+Acked-by: Hugh Dickins <hughd@google.com>
+Reviewed-by: Michal Hocko <mhocko@suse.com>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Oleg Nesterov <oleg@redhat.com>
+Cc: Willy Tarreau <w@1wt.eu>
+Cc: Nick Piggin <npiggin@gmail.com>
+Cc: Greg Thelen <gthelen@google.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/mm.h | 1 +
+ mm/gup.c | 14 ++++++++++++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index 6b85ec6..7cadf0a 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -2064,6 +2064,7 @@ static inline struct page *follow_page(struct vm_area_struct *vma,
+ #define FOLL_NUMA 0x200 /* force NUMA hinting page fault */
+ #define FOLL_MIGRATION 0x400 /* wait for page to replace migration entry */
+ #define FOLL_TRIED 0x800 /* a retry, previous pass started an IO */
++#define FOLL_COW 0x4000 /* internal GUP flag */
+
+ typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
+ void *data);
+diff --git a/mm/gup.c b/mm/gup.c
+index 6297f6b..e6de9e7 100644
+--- a/mm/gup.c
++++ b/mm/gup.c
+@@ -32,6 +32,16 @@ static struct page *no_page_table(struct vm_area_struct *vma,
+ return NULL;
+ }
+
++/*
++ * FOLL_FORCE can write to even unwritable pte's, but only
++ * after we've gone through a COW cycle and they are dirty.
++ */
++static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
++{
++ return pte_write(pte) ||
++ ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
++}
++
+ static struct page *follow_page_pte(struct vm_area_struct *vma,
+ unsigned long address, pmd_t *pmd, unsigned int flags)
+ {
+@@ -66,7 +76,7 @@ retry:
+ }
+ if ((flags & FOLL_NUMA) && pte_protnone(pte))
+ goto no_page;
+- if ((flags & FOLL_WRITE) && !pte_write(pte)) {
++ if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags)) {
+ pte_unmap_unlock(ptep, ptl);
+ return NULL;
+ }
+@@ -315,7 +325,7 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
+ * reCOWed by userspace write).
+ */
+ if ((ret & VM_FAULT_WRITE) && !(vma->vm_flags & VM_WRITE))
+- *flags &= ~FOLL_WRITE;
++ *flags |= FOLL_COW;
+ return 0;
+ }
+
+--
+2.10.1
+
diff --git a/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
new file mode 100644
index 0000000000..9ddfd4fe10
--- /dev/null
+++ b/gnu/packages/patches/notmuch-emacs-25-compatibility-fix.patch
@@ -0,0 +1,46 @@
+This fixes a test failure with emacs-25. Picked from
+https://git.notmuchmail.org/git?p=notmuch;a=commit;h=f575a346df09c82691bb9e7c462836d982fe31f7
+
+From f575a346df09c82691bb9e7c462836d982fe31f7 Mon Sep 17 00:00:00 2001
+From: David Bremner <david@tethera.net>
+Date: Sun, 9 Oct 2016 19:30:44 -0300
+Subject: [PATCH] emacs/show: force notmuch-show-buttonise-links to act on
+ lines
+
+This seems to fix a problem with emacs 25 creating partial buttons by
+calling n-s-b-l with a region that does not include the whole button.
+I'm not 100% sure it's legit to act outside the region passed by
+jit-lock, but goto-address-fontify-region (where I borrowed the code
+from) already does this, so this patch to not make things worse.
+---
+ emacs/notmuch-show.el | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
+index 641398d..e7d16f8 100644
+--- a/emacs/notmuch-show.el
++++ b/emacs/notmuch-show.el
+@@ -1174,13 +1174,15 @@ This also turns id:\"<message id>\"-parts and mid: links into
+ buttons for a corresponding notmuch search."
+ (goto-address-fontify-region start end)
+ (save-excursion
+- (let (links)
+- (goto-char start)
+- (while (re-search-forward notmuch-id-regexp end t)
++ (let (links
++ (beg-line (progn (goto-char start) (line-beginning-position)))
++ (end-line (progn (goto-char end) (line-end-position))))
++ (goto-char beg-line)
++ (while (re-search-forward notmuch-id-regexp end-line t)
+ (push (list (match-beginning 0) (match-end 0)
+ (match-string-no-properties 0)) links))
+- (goto-char start)
+- (while (re-search-forward notmuch-mid-regexp end t)
++ (goto-char beg-line)
++ (while (re-search-forward notmuch-mid-regexp end-line t)
+ (let* ((mid-cid (match-string-no-properties 1))
+ (mid (save-match-data
+ (string-match "^[^/]*" mid-cid)
+--
+2.10.1
+
diff --git a/gnu/packages/patches/openssh-memory-exhaustion.patch b/gnu/packages/patches/openssh-memory-exhaustion.patch
new file mode 100644
index 0000000000..91fe294ca4
--- /dev/null
+++ b/gnu/packages/patches/openssh-memory-exhaustion.patch
@@ -0,0 +1,39 @@
+Fix a memory exhaustion bug in the key exchange, whereby an unauthenticated user
+could potentially consume 38400 MB of memory on the server:
+
+http://seclists.org/oss-sec/2016/q4/185
+
+Patch adapted from upstream source repository:
+
+https://github.com/openssh/openssh-portable/commit/ec165c392ca54317dbe3064a8c200de6531e89ad
+
+From ec165c392ca54317dbe3064a8c200de6531e89ad Mon Sep 17 00:00:00 2001
+From: "markus@openbsd.org" <markus@openbsd.org>
+Date: Mon, 10 Oct 2016 19:28:48 +0000
+Subject: [PATCH] upstream commit
+
+Unregister the KEXINIT handler after message has been
+received. Otherwise an unauthenticated peer can repeat the KEXINIT and cause
+allocation of up to 128MB -- until the connection is closed. Reported by
+shilei-c at 360.cn
+
+Upstream-ID: 43649ae12a27ef94290db16d1a98294588b75c05
+---
+ kex.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/kex.c b/kex.c
+index 3f97f8c..6a94bc5 100644
+--- a/kex.c
++++ b/kex.c
+@@ -481,6 +481,7 @@ kex_input_kexinit(int type, u_int32_t seq, void *ctxt)
+ if (kex == NULL)
+ return SSH_ERR_INVALID_ARGUMENT;
+
++ ssh_dispatch_set(ssh, SSH2_MSG_KEXINIT, NULL);
+ ptr = sshpkt_ptr(ssh, &dlen);
+ if ((r = sshbuf_put(kex->peer, ptr, dlen)) != 0)
+ return r;
+--
+2.10.1
+
diff --git a/gnu/packages/patches/slim-login.patch b/gnu/packages/patches/slim-login.patch
new file mode 100644
index 0000000000..515573c6fa
--- /dev/null
+++ b/gnu/packages/patches/slim-login.patch
@@ -0,0 +1,35 @@
+Display configurable login message after successful authentication.
+
+Patch by E. Bavier
+
+--- slim-1.3.6/panel.cpp.orig 1969-12-31 18:00:00.000000000 -0600
++++ slim-1.3.6/panel.cpp 2016-10-17 17:00:07.259649063 -0500
+@@ -260,6 +260,7 @@
+
+ void Panel::ClosePanel() {
+ XUngrabKeyboard(Dpy, CurrentTime);
++ XClearWindow(Dpy, Root);
+ XUnmapWindow(Dpy, Win);
+ XDestroyWindow(Dpy, Win);
+ XFlush(Dpy);
+--- slim-1.3.6/cfg.cpp.orig 2016-10-17 17:08:06.767666139 -0500
++++ slim-1.3.6/cfg.cpp 2016-10-17 17:06:53.115663516 -0500
+@@ -52,6 +52,7 @@
+ options.insert(option("lockfile","/var/run/slim.lock"));
+ options.insert(option("logfile","/var/log/slim.log"));
+ options.insert(option("authfile","/var/run/slim.auth"));
++ options.insert(option("login_msg","Logging in..."));
+ options.insert(option("shutdown_msg","The system is halting..."));
+ options.insert(option("reboot_msg","The system is rebooting..."));
+ options.insert(option("sessiondir",""));
+--- slim-1.3.6/app.cpp.orig 2016-10-17 17:08:41.731667384 -0500
++++ slim-1.3.6/app.cpp 2016-10-17 17:07:48.415665486 -0500
+@@ -520,6 +520,8 @@
+ struct passwd *pw;
+ pid_t pid;
+
++ LoginPanel->Message((char*)cfg->getOption("login_msg").c_str());
++
+ #ifdef USE_PAM
+ try{
+ pam.open_session();
diff --git a/gnu/packages/patches/slim-reset.patch b/gnu/packages/patches/slim-reset.patch
new file mode 100644
index 0000000000..eebee6b7b5
--- /dev/null
+++ b/gnu/packages/patches/slim-reset.patch
@@ -0,0 +1,33 @@
+Do not reset chosen session and maintain the session-choser dialog after a
+failed login attempt.
+
+Patch by E. Bavier
+
+--- slim-1.3.6/panel.cpp.orig 1969-12-31 18:00:00.000000000 -0600
++++ slim-1.3.6/panel.cpp 2016-10-17 17:00:07.259649063 -0500
+@@ -260,13 +260,12 @@
+ }
+
+ void Panel::ClearPanel() {
+- session_name = "";
+- session_exec = "";
+ Reset();
+ XClearWindow(Dpy, Root);
+ XClearWindow(Dpy, Win);
+ Cursor(SHOW);
+ ShowText();
++ ShowSession();
+ XFlush(Dpy);
+ }
+
+@@ -760,9 +760,7 @@
+ pair<string,string> ses = cfg->nextSession();
+ session_name = ses.first;
+ session_exec = ses.second;
+- if (session_name.size() > 0) {
+- ShowSession();
+- }
++ ShowSession();
+ }
+
+ /* Display session type on the screen */