openssl: bump to 1.1.1s
Changes between 1.1.1r and 1.1.1s [1 Nov 2022]
  *) Fixed a regression introduced in 1.1.1r version not refreshing the
     certificate data to be signed before signing the certificate.
     [Gibeom Gwon]
 Changes between 1.1.1q and 1.1.1r [11 Oct 2022]
  *) Fixed the linux-mips64 Configure target which was missing the
     SIXTY_FOUR_BIT bn_ops flag. This was causing heap corruption on that
     platform.
     [Adam Joseph]
  *) Fixed a strict aliasing problem in bn_nist. Clang-14 optimisation was
     causing incorrect results in some cases as a result.
     [Paul Dale]
  *) Fixed SSL_pending() and SSL_has_pending() with DTLS which were failing to
     report correct results in some cases
     [Matt Caswell]
  *) Fixed a regression introduced in 1.1.1o for re-signing certificates with
     different key sizes
     [Todd Short]
  *) Added the loongarch64 target
     [Shi Pujin]
  *) Fixed a DRBG seed propagation thread safety issue
     [Bernd Edlinger]
  *) Fixed a memory leak in tls13_generate_secret
     [Bernd Edlinger]
  *) Fixed reported performance degradation on aarch64. Restored the
     implementation prior to commit 2621751 ("aes/asm/aesv8-armx.pl: avoid
     32-bit lane assignment in CTR mode") for 64bit targets only, since it is
     reportedly 2-17% slower and the silicon errata only affects 32bit targets.
     The new algorithm is still used for 32 bit targets.
     [Bernd Edlinger]
  *) Added a missing header for memcmp that caused compilation failure on some
     platforms
     [Gregor Jasny]
Build system: x86_64
Build-tested: bcm2711/RPi4B
Run-tested: bcm2711/RPi4B
Signed-off-by: John Audia <therealgraysky@proton.me>
			
			
This commit is contained in:
		@@ -15,7 +15,6 @@ Reviewed-by: Paul Dale <paul.dale@oracle.com>
 | 
			
		||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
 | 
			
		||||
(Merged from https://github.com/openssl/openssl/pull/8883)
 | 
			
		||||
 | 
			
		||||
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
 | 
			
		||||
--- a/crypto/perlasm/ppc-xlate.pl
 | 
			
		||||
+++ b/crypto/perlasm/ppc-xlate.pl
 | 
			
		||||
@@ -49,7 +49,7 @@ my $globl = sub {
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,9 @@ version to disable building the AFALG engine on openwrt targets.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/Configure b/Configure
 | 
			
		||||
--- a/Configure
 | 
			
		||||
+++ b/Configure
 | 
			
		||||
@@ -1548,7 +1548,9 @@ unless ($disabled{"crypto-mdebug-backtrace"})
 | 
			
		||||
@@ -1548,7 +1548,9 @@ unless ($disabled{"crypto-mdebug-backtra
 | 
			
		||||
 
 | 
			
		||||
 unless ($disabled{afalgeng}) {
 | 
			
		||||
     $config{afalgeng}="";
 | 
			
		||||
 
 | 
			
		||||
@@ -7,8 +7,6 @@ Targets are named: linux-$(CONFIG_ARCH)-openwrt
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/Configurations/25-openwrt.conf b/Configurations/25-openwrt.conf
 | 
			
		||||
new file mode 100644
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/Configurations/25-openwrt.conf
 | 
			
		||||
@@ -0,0 +1,52 @@
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,9 @@ OpenSSL_version(OPENSSL_CFLAGS), or running openssl version -a
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/crypto/build.info b/crypto/build.info
 | 
			
		||||
--- a/crypto/build.info
 | 
			
		||||
+++ b/crypto/build.info
 | 
			
		||||
@@ -10,7 +10,7 @@ EXTRA=  ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
 | 
			
		||||
@@ -10,7 +10,7 @@ EXTRA=  ../ms/uplink-x86.pl ../ms/uplink
 | 
			
		||||
         ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
 | 
			
		||||
 
 | 
			
		||||
 DEPEND[cversion.o]=buildinf.h
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,9 @@ This shortens build time.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/Configure b/Configure
 | 
			
		||||
--- a/Configure
 | 
			
		||||
+++ b/Configure
 | 
			
		||||
@@ -318,7 +318,7 @@ my $auto_threads=1;    # enable threads automatically? true by default
 | 
			
		||||
@@ -318,7 +318,7 @@ my $auto_threads=1;    # enable threads
 | 
			
		||||
 my $default_ranlib;
 | 
			
		||||
 
 | 
			
		||||
 # Top level directories to build
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,6 @@ when the client has it on top of its ciphersuite preference.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
 | 
			
		||||
--- a/include/openssl/ssl.h
 | 
			
		||||
+++ b/include/openssl/ssl.h
 | 
			
		||||
@@ -173,9 +173,15 @@ extern "C" {
 | 
			
		||||
@@ -36,10 +35,9 @@ diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
 | 
			
		||||
 # else
 | 
			
		||||
 #  define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \
 | 
			
		||||
                                    "TLS_AES_128_GCM_SHA256"
 | 
			
		||||
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
 | 
			
		||||
--- a/ssl/ssl_ciph.c
 | 
			
		||||
+++ b/ssl/ssl_ciph.c
 | 
			
		||||
@@ -1467,11 +1467,29 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
 | 
			
		||||
@@ -1465,11 +1465,29 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
 | 
			
		||||
     ssl_cipher_apply_rule(0, SSL_kECDHE, 0, 0, 0, 0, 0, CIPHER_DEL, -1, &head,
 | 
			
		||||
                           &tail);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +67,7 @@ diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
 | 
			
		||||
 
 | 
			
		||||
     /*
 | 
			
		||||
      * ...and generally, our preferred cipher is AES.
 | 
			
		||||
@@ -1527,7 +1545,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
 | 
			
		||||
@@ -1525,7 +1543,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_
 | 
			
		||||
      * Within each group, ciphers remain sorted by strength and previous
 | 
			
		||||
      * preference, i.e.,
 | 
			
		||||
      * 1) ECDHE > DHE
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,6 @@ This adds configuration options for engines, loading all cnf files under
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/apps/openssl.cnf b/apps/openssl.cnf
 | 
			
		||||
--- a/apps/openssl.cnf
 | 
			
		||||
+++ b/apps/openssl.cnf
 | 
			
		||||
@@ -22,6 +22,16 @@ oid_section		= new_oids
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,6 @@ Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
 | 
			
		||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
 | 
			
		||||
(Merged from https://github.com/openssl/openssl/pull/7585)
 | 
			
		||||
 | 
			
		||||
diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
--- a/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+++ b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
@@ -461,6 +461,7 @@ struct digest_ctx {
 | 
			
		||||
@@ -25,7 +24,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 static const struct digest_data_st {
 | 
			
		||||
@@ -564,12 +565,15 @@ static int digest_update(EVP_MD_CTX *ctx, const void *data, size_t count)
 | 
			
		||||
@@ -564,12 +565,15 @@ static int digest_update(EVP_MD_CTX *ctx
 | 
			
		||||
     if (digest_ctx == NULL)
 | 
			
		||||
         return 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +44,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
 | 
			
		||||
@@ -579,7 +583,10 @@ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
 | 
			
		||||
@@ -579,7 +583,10 @@ static int digest_final(EVP_MD_CTX *ctx,
 | 
			
		||||
 
 | 
			
		||||
     if (md == NULL || digest_ctx == NULL)
 | 
			
		||||
         return 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,6 @@ Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
 | 
			
		||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
 | 
			
		||||
(Merged from https://github.com/openssl/openssl/pull/7585)
 | 
			
		||||
 | 
			
		||||
diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
--- a/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+++ b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
@@ -79,7 +78,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 
 | 
			
		||||
     /*
 | 
			
		||||
      * Code further down must make sure that only NIDs in the table above
 | 
			
		||||
@@ -333,19 +367,40 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx)
 | 
			
		||||
@@ -333,19 +367,40 @@ static int cipher_cleanup(EVP_CIPHER_CTX
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@@ -185,7 +184,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 static const EVP_CIPHER *get_cipher_method(int nid)
 | 
			
		||||
 {
 | 
			
		||||
     size_t i = get_cipher_data_index(nid);
 | 
			
		||||
@@ -438,6 +520,36 @@ static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
 | 
			
		||||
@@ -438,6 +520,36 @@ static int devcrypto_ciphers(ENGINE *e,
 | 
			
		||||
     return *cipher != NULL;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -246,7 +245,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 
 | 
			
		||||
     /*
 | 
			
		||||
      * Code further down must make sure that only NIDs in the table above
 | 
			
		||||
@@ -516,8 +637,8 @@ static const struct digest_data_st *get_digest_data(int nid)
 | 
			
		||||
@@ -516,8 +637,8 @@ static const struct digest_data_st *get_
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@@ -257,7 +256,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
  */
 | 
			
		||||
 
 | 
			
		||||
 static int digest_init(EVP_MD_CTX *ctx)
 | 
			
		||||
@@ -630,52 +751,94 @@ static int digest_cleanup(EVP_MD_CTX *ctx)
 | 
			
		||||
@@ -630,52 +751,94 @@ static int digest_cleanup(EVP_MD_CTX *ct
 | 
			
		||||
     return clean_devcrypto_session(&digest_ctx->sess);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -402,7 +401,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
     }
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -739,8 +909,154 @@ static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
 | 
			
		||||
@@ -739,7 +909,153 @@ static int devcrypto_digests(ENGINE *e,
 | 
			
		||||
     return *digest != NULL;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -478,8 +477,8 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+    "DIGESTS",
 | 
			
		||||
+    "either ALL, NONE, or a comma-separated list of digests to enable [default=ALL]",
 | 
			
		||||
+    ENGINE_CMD_FLAG_STRING},
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
+   {0, NULL, NULL, 0}
 | 
			
		||||
+};
 | 
			
		||||
+
 | 
			
		||||
@@ -503,7 +502,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+        use_softdrivers = i;
 | 
			
		||||
+#ifdef IMPLEMENT_DIGEST
 | 
			
		||||
+        rebuild_known_digest_nids(e);
 | 
			
		||||
+#endif
 | 
			
		||||
 #endif
 | 
			
		||||
+        rebuild_known_cipher_nids(e);
 | 
			
		||||
+        return 1;
 | 
			
		||||
+#endif /* CIOCGSESSINFO */
 | 
			
		||||
@@ -553,10 +552,9 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+    }
 | 
			
		||||
+    return 0;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 
 | 
			
		||||
 /******************************************************************************
 | 
			
		||||
  *
 | 
			
		||||
  * LOAD / UNLOAD
 | 
			
		||||
@@ -806,6 +1122,8 @@ void engine_load_devcrypto_int()
 | 
			
		||||
 
 | 
			
		||||
     if (!ENGINE_set_id(e, "devcrypto")
 | 
			
		||||
 
 | 
			
		||||
@@ -11,10 +11,9 @@ Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
 | 
			
		||||
Reviewed-by: Richard Levitte <levitte@openssl.org>
 | 
			
		||||
(Merged from https://github.com/openssl/openssl/pull/7585)
 | 
			
		||||
 | 
			
		||||
diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
--- a/crypto/engine/eng_devcrypto.c
 | 
			
		||||
+++ b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
@@ -50,16 +50,20 @@ static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
 | 
			
		||||
@@ -50,16 +50,20 @@ static int use_softdrivers = DEVCRYPTO_D
 | 
			
		||||
  */
 | 
			
		||||
 struct driver_info_st {
 | 
			
		||||
     enum devcrypto_status_t {
 | 
			
		||||
@@ -81,7 +80,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 #endif /* CIOCGSESSINFO */
 | 
			
		||||
         }
 | 
			
		||||
         ioctl(cfd, CIOCFSESSION, &sess.ses);
 | 
			
		||||
@@ -505,8 +514,11 @@ static void destroy_all_cipher_methods(void)
 | 
			
		||||
@@ -505,8 +514,11 @@ static void destroy_all_cipher_methods(v
 | 
			
		||||
 {
 | 
			
		||||
     size_t i;
 | 
			
		||||
 
 | 
			
		||||
@@ -94,7 +93,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
 | 
			
		||||
@@ -550,6 +562,40 @@ static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
 | 
			
		||||
@@ -550,6 +562,40 @@ static int cryptodev_select_cipher_cb(co
 | 
			
		||||
     return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +188,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
             EVP_MD_meth_free(known_digest_methods[i]);
 | 
			
		||||
             known_digest_methods[i] = NULL;
 | 
			
		||||
             goto finish;
 | 
			
		||||
@@ -894,8 +945,11 @@ static void destroy_all_digest_methods(void)
 | 
			
		||||
@@ -894,8 +945,11 @@ static void destroy_all_digest_methods(v
 | 
			
		||||
 {
 | 
			
		||||
     size_t i;
 | 
			
		||||
 
 | 
			
		||||
@@ -202,7 +201,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
 | 
			
		||||
@@ -939,6 +993,43 @@ static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
 | 
			
		||||
@@ -939,6 +993,43 @@ static int cryptodev_select_digest_cb(co
 | 
			
		||||
     return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -246,7 +245,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 /******************************************************************************
 | 
			
		||||
@@ -983,6 +1074,11 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
 | 
			
		||||
@@ -983,6 +1074,11 @@ static const ENGINE_CMD_DEFN devcrypto_c
 | 
			
		||||
     ENGINE_CMD_FLAG_STRING},
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
@@ -258,7 +257,7 @@ diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
 | 
			
		||||
    {0, NULL, NULL, 0}
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@@ -1051,6 +1147,13 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
 | 
			
		||||
@@ -1051,6 +1147,13 @@ static int devcrypto_ctrl(ENGINE *e, int
 | 
			
		||||
         return 1;
 | 
			
		||||
 #endif /* IMPLEMENT_DIGEST */
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -19,7 +19,6 @@ turn them on if it is safe and fast enough.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c
 | 
			
		||||
--- a/engines/e_devcrypto.c
 | 
			
		||||
+++ b/engines/e_devcrypto.c
 | 
			
		||||
@@ -852,7 +852,7 @@ static void prepare_digest_methods(void)
 | 
			
		||||
@@ -31,7 +30,7 @@ diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c
 | 
			
		||||
 
 | 
			
		||||
         /*
 | 
			
		||||
          * Check that the digest is usable
 | 
			
		||||
@@ -1072,7 +1072,7 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
 | 
			
		||||
@@ -1072,7 +1072,7 @@ static const ENGINE_CMD_DEFN devcrypto_c
 | 
			
		||||
 #ifdef IMPLEMENT_DIGEST
 | 
			
		||||
    {DEVCRYPTO_CMD_DIGESTS,
 | 
			
		||||
     "DIGESTS",
 | 
			
		||||
 
 | 
			
		||||
@@ -8,10 +8,9 @@ session.  It may have been closed by another process after a fork.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
 | 
			
		||||
 | 
			
		||||
diff --git a/engines/e_devcrypto.c b/engines/e_devcrypto.c
 | 
			
		||||
--- a/engines/e_devcrypto.c
 | 
			
		||||
+++ b/engines/e_devcrypto.c
 | 
			
		||||
@@ -195,9 +195,8 @@ static int cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key,
 | 
			
		||||
@@ -195,9 +195,8 @@ static int cipher_init(EVP_CIPHER_CTX *c
 | 
			
		||||
         get_cipher_data(EVP_CIPHER_CTX_nid(ctx));
 | 
			
		||||
 
 | 
			
		||||
     /* cleanup a previous session */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user