summaryrefslogtreecommitdiff
path: root/source4/heimdal/lib/wind/punycode.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2022-01-19 13:15:45 +0100
committerJoseph Sutton <jsutton@samba.org>2022-01-19 21:41:59 +0000
commit7055827b8ffd3823c1240ba3f0b619dd6068cd51 (patch)
treeabb14aa7455bde7b1b33b706123c57ccfc28fcaa /source4/heimdal/lib/wind/punycode.c
parent1954e50f266256c9e153c9613f49f9d9f5dbf67b (diff)
downloadsamba-7055827b8ffd3823c1240ba3f0b619dd6068cd51.tar.gz
HEIMDAL: move code from source4/heimdal* to third_party/heimdal*
This makes it clearer that we always want to do heimdal changes via the lorikeet-heimdal repository. Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz> Autobuild-User(master): Joseph Sutton <jsutton@samba.org> Autobuild-Date(master): Wed Jan 19 21:41:59 UTC 2022 on sn-devel-184
Diffstat (limited to 'source4/heimdal/lib/wind/punycode.c')
-rw-r--r--source4/heimdal/lib/wind/punycode.c168
1 files changed, 0 insertions, 168 deletions
diff --git a/source4/heimdal/lib/wind/punycode.c b/source4/heimdal/lib/wind/punycode.c
deleted file mode 100644
index 2b190ce03b9..00000000000
--- a/source4/heimdal/lib/wind/punycode.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2004 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the Institute nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <string.h>
-#include "windlocl.h"
-
-static const unsigned base = 36;
-static const unsigned t_min = 1;
-static const unsigned t_max = 26;
-static const unsigned skew = 38;
-static const unsigned damp = 700;
-static const unsigned initial_n = 128;
-static const unsigned initial_bias = 72;
-
-static unsigned
-digit(unsigned n)
-{
- return "abcdefghijklmnopqrstuvwxyz0123456789"[n];
-}
-
-static unsigned
-adapt(unsigned delta, unsigned numpoints, int first)
-{
- unsigned k;
-
- if (first)
- delta = delta / damp;
- else
- delta /= 2;
- delta += delta / numpoints;
- k = 0;
- while (delta > ((base - t_min) * t_max) / 2) {
- delta /= base - t_min;
- k += base;
- }
- return k + (((base - t_min + 1) * delta) / (delta + skew));
-}
-
-/**
- * Convert an UCS4 string to a puny-coded DNS label string suitable
- * when combined with delimiters and other labels for DNS lookup.
- *
- * @param in an UCS4 string to convert
- * @param in_len the length of in.
- * @param out the resulting puny-coded string. The string is not NUL
- * terminatied.
- * @param out_len before processing out_len should be the length of
- * the out variable, after processing it will be the length of the out
- * string.
- *
- * @return returns 0 on success, an wind error code otherwise
- * @ingroup wind
- */
-
-int
-wind_punycode_label_toascii(const uint32_t *in, size_t in_len,
- char *out, size_t *out_len)
-{
- unsigned n = initial_n;
- unsigned delta = 0;
- unsigned bias = initial_bias;
- unsigned h = 0;
- unsigned b;
- unsigned i;
- unsigned o = 0;
- unsigned m;
-
- for (i = 0; i < in_len; ++i) {
- if (in[i] < 0x80) {
- ++h;
- if (o >= *out_len)
- return WIND_ERR_OVERRUN;
- out[o++] = in[i];
- }
- }
- b = h;
- if (b > 0) {
- if (o >= *out_len)
- return WIND_ERR_OVERRUN;
- out[o++] = 0x2D;
- }
- /* is this string punycoded */
- if (h < in_len) {
- if (o + 4 >= *out_len)
- return WIND_ERR_OVERRUN;
- memmove(out + 4, out, o);
- memcpy(out, "xn--", 4);
- o += 4;
- }
-
- while (h < in_len) {
- m = (unsigned)-1;
- for (i = 0; i < in_len; ++i)
- if(in[i] < m && in[i] >= n)
- m = in[i];
-
- delta += (m - n) * (h + 1);
- n = m;
- for (i = 0; i < in_len; ++i) {
- if (in[i] < n) {
- ++delta;
- } else if (in[i] == n) {
- unsigned q = delta;
- unsigned k;
- for (k = base; ; k += base) {
- unsigned t;
- if (k <= bias)
- t = t_min;
- else if (k >= bias + t_max)
- t = t_max;
- else
- t = k - bias;
- if (q < t)
- break;
- if (o >= *out_len)
- return WIND_ERR_OVERRUN;
- out[o++] = digit(t + ((q - t) % (base - t)));
- q = (q - t) / (base - t);
- }
- if (o >= *out_len)
- return WIND_ERR_OVERRUN;
- out[o++] = digit(q);
- /* output */
- bias = adapt(delta, h + 1, h == b);
- delta = 0;
- ++h;
- }
- }
- ++delta;
- ++n;
- }
-
- *out_len = o;
- return 0;
-}