forked from Mirrors/freeswitch
853936abd3
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4939 d0543943-73ff-0310-b7d9-9358b9ac24b2
191 lines
4.6 KiB
C
191 lines
4.6 KiB
C
/*
|
|
* This file is part of the Sofia-SIP package
|
|
*
|
|
* Copyright (C) 2005 Nokia Corporation.
|
|
*
|
|
* Contact: Pekka Pessi <pekka.pessi@nokia.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation; either version 2.1 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @file torture_base64.c
|
|
* @brief Test BASE64 encoding/decoding
|
|
*
|
|
* @author Pekka Pessi <Pekka.Pessi@nokia.com> \n
|
|
*
|
|
* @date Created: Tue Feb 1 13:29:09 EET 2005 ppessi
|
|
*
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "sofia-sip/base64.h"
|
|
|
|
int tstflags = 0;
|
|
#define TSTFLAGS tstflags
|
|
|
|
char const *name = "torture_base64";
|
|
|
|
#include <sofia-sip/tstdef.h>
|
|
|
|
char const constant[] = "not changed";
|
|
|
|
int test_encoding(void)
|
|
{
|
|
char buffer[32];
|
|
|
|
BEGIN();
|
|
|
|
TEST_SIZE(base64_e(buffer, sizeof buffer, "\0\020\203", 3), 4);
|
|
TEST_S(buffer, "ABCD");
|
|
|
|
strcpy(buffer + 5, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 5, "\0\020\203", 3), 4);
|
|
TEST_S(buffer + 5, "not changed");
|
|
TEST_S(buffer, "ABCD");
|
|
|
|
strcpy(buffer + 4, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 4, "\0\020\203", 3), 4);
|
|
TEST_S(buffer + 4, "not changed");
|
|
TEST_S(buffer, "ABC");
|
|
|
|
strcpy(buffer + 3, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 3, "\0\020\203", 3), 4);
|
|
TEST_S(buffer + 3, "not changed");
|
|
TEST_S(buffer, "AB");
|
|
|
|
strcpy(buffer + 2, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 2, "\0\020\203", 3), 4);
|
|
TEST_S(buffer + 2, "not changed");
|
|
TEST_S(buffer, "A");
|
|
|
|
strcpy(buffer + 1, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 1, "\0\020\203", 3), 4);
|
|
TEST_S(buffer + 1, "not changed");
|
|
TEST_S(buffer, "");
|
|
|
|
strcpy(buffer + 5, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 5, "\0\020", 2), 4);
|
|
TEST_S(buffer + 5, "not changed");
|
|
TEST_S(buffer, "ABA=");
|
|
|
|
strcpy(buffer + 4, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 4, "\0\020", 2), 4);
|
|
TEST_S(buffer + 4, "not changed");
|
|
TEST_S(buffer, "ABA");
|
|
|
|
strcpy(buffer + 3, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 3, "\0\020", 2), 4);
|
|
TEST_S(buffer + 3, "not changed");
|
|
TEST_S(buffer, "AB");
|
|
|
|
strcpy(buffer + 2, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 2, "\0\020", 2), 4);
|
|
TEST_S(buffer + 2, "not changed");
|
|
TEST_S(buffer, "A");
|
|
|
|
strcpy(buffer + 1, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 1, "\0\020", 2), 4);
|
|
TEST_S(buffer + 1, "not changed");
|
|
TEST_S(buffer, "");
|
|
|
|
strcpy(buffer + 5, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 5, "\0", 1), 4);
|
|
TEST_S(buffer + 5, "not changed");
|
|
TEST_S(buffer, "AA==");
|
|
|
|
strcpy(buffer + 4, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 4, "\0", 1), 4);
|
|
TEST_S(buffer + 4, "not changed");
|
|
TEST_S(buffer, "AA=");
|
|
|
|
strcpy(buffer + 3, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 3, "\0", 1), 4);
|
|
TEST_S(buffer + 3, "not changed");
|
|
TEST_S(buffer, "AA");
|
|
|
|
strcpy(buffer + 2, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 2, "\0", 1), 4);
|
|
TEST_S(buffer + 2, "not changed");
|
|
TEST_S(buffer, "A");
|
|
|
|
strcpy(buffer + 1, "not changed");
|
|
TEST_SIZE(base64_e(buffer, 1, "\0", 1), 4);
|
|
TEST_S(buffer + 1, "not changed");
|
|
TEST_S(buffer, "");
|
|
|
|
END();
|
|
}
|
|
|
|
int test_decoding(void)
|
|
{
|
|
char buffer[32];
|
|
|
|
BEGIN();
|
|
|
|
strcpy(buffer + 0, "not changed");
|
|
TEST_SIZE(base64_d((void *)buffer, 0, "ABCD"), 3);
|
|
TEST_S(buffer + 0, "not changed");
|
|
|
|
TEST_SIZE(base64_d((void *)buffer, 3, "ABCD"), 3);
|
|
TEST_M(buffer, "\0\020\203", 3);
|
|
|
|
TEST_SIZE(base64_d(NULL, 3, "ABCD"), 3);
|
|
|
|
TEST_SIZE(base64_d((void *)buffer, 3, "A B C D !!"), 3);
|
|
TEST_M(buffer, "\0\020\203", 3);
|
|
|
|
END();
|
|
}
|
|
|
|
|
|
void usage(int exitcode)
|
|
{
|
|
fprintf(stderr,
|
|
"usage: %s [-v] [-a]\n",
|
|
name);
|
|
exit(exitcode);
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int retval = 0;
|
|
int i;
|
|
|
|
for (i = 1; argv[i]; i++) {
|
|
if (strcmp(argv[i], "-v") == 0)
|
|
tstflags |= tst_verbatim;
|
|
else if (strcmp(argv[i], "-a") == 0)
|
|
tstflags |= tst_abort;
|
|
else
|
|
usage(1);
|
|
}
|
|
|
|
retval |= test_encoding(); fflush(stdout);
|
|
retval |= test_decoding(); fflush(stdout);
|
|
|
|
return retval;
|
|
}
|