-
-static void
-log_string(const char *s)
-{
- puts(s);
-}
-
-//+ C String-Functions-format
-void log_format(const char *format, ...) __attribute__((format(printf, 1, 2)));
-
-void
-log_format(const char *format, ...)
-{
- char buf[1000];
- va_list ap;
- va_start(ap, format);
- vsnprintf(buf, sizeof(buf), format, ap);
- va_end(ap);
- log_string(buf);
-}
-//-
-
-int
-main(void)
-{
- {
- int numerator = 3, denominator = 4;
- //+ C String-Functions-snprintf
- char fraction[30];
- snprintf(fraction, sizeof(fraction), "%d/%d", numerator, denominator);
- //-
- puts(fraction);
- }
- log_format("%s %x", "foo", 0xba4);
- {
- const char *const data = "this message is quite long";
- //+ C String-Functions-strncpy
- char buf[10];
- strncpy(buf, data, sizeof(buf));
- buf[sizeof(buf) - 1] = '\0';
- //-
- assert(strlen(buf) == 9);
- assert(strncmp(buf, data, 9) == 0);
- }
-}
diff --git a/defensive-coding/src/.svn/text-base/DERParser.java.svn-base b/defensive-coding/src/.svn/text-base/DERParser.java.svn-base
deleted file mode 100644
index 67157db..0000000
--- a/defensive-coding/src/.svn/text-base/DERParser.java.svn-base
+++ /dev/null
@@ -1,274 +0,0 @@
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-
-/**
- * Minimalistic DER parser suitable for extracting the commonName attribute from
- * a subject distinguished name of an X.509 certificate.
- *
- *
- * All elements in the DER structure can be parsed using:
- *
- *
- * while (parser.isRemaining()) {
- * if (!parser.next()) {
- * handleError();
- * break;
- * }
- * // Examine parser.getTagClass() etc. here.
- * }
- *
- *
- * Note that this parser only handles structures of up to 16 MB in size.
- *
- * @author Florian Weimer
- *
- */
-public final class DERParser {
- private final byte[] data;
- private final int end;
- private int offset;
-
- private int tag = -1;
- private int contentLength = -1;
-
- // Content starts at offset - contentLength.
-
- /**
- * Creates a new parser for the specified array.
- *
- * @param data
- * the data to parse (not copied)
- * @throws NullPointerException
- * the argument is null
- */
- public DERParser(byte[] data) {
- this(data, 0, data.length);
- }
-
- /**
- * Creates an new parser for the slice [offset, offset + length) of the byte
- * array.
- *
- * @param data
- * the array to parse from (not copied)
- * @param offset
- * the offset at which to start parsing
- * @param length
- * the number of bytes to parse
- * @throws NullPointerException
- * the array argument is null
- * @throws ArrayIndexOutOfBoundsException
- * offset or length are negative or extend past the end of the
- * array
- */
- public DERParser(byte[] data, int offset, int length) {
- this.data = data;
- this.offset = offset;
- end = offset + length;
- if (offset < 0 || length < 0 || offset > data.length || end < 0
- || end > data.length)
- throw new ArrayIndexOutOfBoundsException();
- }
-
- /**
- * Returns true if more data can be extracted from the input.
- */
- public boolean isRemaining() {
- return offset < end;
- }
-
- /**
- * Decodes the next tag/length/value element in the input data. After that,
- * the parsed data can be examined using
- * {@link #getTag()}, {@link #getLength()}, {@link #getString()}, and
- * {@link #open()}.
- * @return true if the TLV could be parsed successfully, false otherwise
- */
- public boolean next() {
- if (offset >= end)
- throw new IllegalStateException("input exhausted");
- int identifier = data[offset];
- tag = identifier & ~0x20; // mask out P/C bit
- if ((tag & 0x1f) == 31)
- return false; // long form of type not supported
- ++offset;
- if (offset >= end)
- return false;
- contentLength = data[offset];
- if (contentLength < 0) {
- int subLength = contentLength & 0x7f;
- contentLength = 0;
- switch (subLength) {
- case 3:
- ++offset;
- if (offset >= end)
- return false;
- contentLength = (data[offset] & 0xFF) << 16;
- //$FALL-THROUGH$
- case 2:
- ++offset;
- if (offset >= end)
- return false;
- contentLength = contentLength | ((data[offset] & 0xFF) << 8);
- //$FALL-THROUGH$
- case 1:
- ++offset;
- if (offset >= end)
- return false;
- contentLength = contentLength | (data[offset] & 0xFF);
- break;
- case 0:
- default:
- // We only need to support DER values up to 16 MB.
- return false;
- }
- }
- ++offset;
- if (offset + contentLength < 0 || offset + contentLength > end)
- return false;
- offset += contentLength;
- return true;
- }
-
- public static final int TAG_OBJECT_IDENTIFIER = 6;
- public static final int TAG_UTF8_STRING = 12;
- public static final int TAG_SEQUENCE = 16;
- public static final int TAG_SET = 17;
- public static final int TAG_PRINTABLE_STRING = 19;
- public static final int TAG_TELETEX_STRING = 20;
- public static final int TAG_IA5_STRING = 22;
- public static final int TAG_UNIVERSAL_STRING = 28;
- public static final int TAG_BMP_STRING = 30;
-
- /**
- * Returns the tag value encountered by the most recent call to
- * {@link #next()}.
- * @return if the class is universal, an integer between 0 and 31,
- * otherwise a positive integer less than 255 (which includes
- * the class bits as well)
- */
- public int getTag() {
- return tag;
- }
-
- /**
- * Returns the length (in bytes) of the content encountered by the most
- * recent call to {@link #next()}.
- *
- * @return a non-negative integer
- */
- public int getLength() {
- return contentLength;
- }
-
- /**
- * Returns true if the current content bytes are equal to the specified
- * bytes.
- *
- * @param reference
- * the byte array to compare the current content to
- * @return true if length the byte content match
- */
- public boolean isContent(byte[] reference) {
- if (reference.length != contentLength)
- return false;
- int off = offset - contentLength;
- for (int i = 0; i < reference.length; ++i) {
- if (data[off + i] != reference[i])
- return false;
- }
- return true;
- }
-
- /**
- * Returns the current object as a string.
- *
- * @return a new string which contains the current content in decoded form
- * @throws IllegalStateException
- * the parser is not positioned at a string type
- */
- public String getString() {
- String charset;
- switch (tag) {
- case TAG_UTF8_STRING:
- charset = "UTF-8";
- break;
- case TAG_PRINTABLE_STRING:
- case TAG_TELETEX_STRING: // ASCII super-set not supported by Java
- case TAG_IA5_STRING:
- charset = "ASCII";
- break;
- case TAG_UNIVERSAL_STRING:
- charset = "UTF-32BE";
- break;
- case TAG_BMP_STRING:
- charset = "UTF-16BE";
- break;
- default:
- throw new IllegalStateException(
- "string requested for non-string type " + tag);
- }
- return new String(data, offset - contentLength, contentLength,
- Charset.forName(charset));
- }
-
- /**
- * Returns a DER parser for the current substructure
- *
- * @return a new DER parser object which shares the underlying byte array
- * with this one
- */
- public DERParser open() {
- return new DERParser(data, offset - contentLength, contentLength);
- }
-
- // Code below only included for exploratory purposes.
-
- private static final byte[] OID_COMMON_NAME = { 2 * 40 + 5, 4, 3 };
-
- public static String getHostname(X509Certificate peer) {
- DERParser outer = new DERParser(peer.getSubjectX500Principal()
- .getEncoded());
- if (!outer.next() || outer.getTag() != DERParser.TAG_SEQUENCE)
- return null;
- outer = outer.open();
- String mostSpecificCN = null;
- while (outer.isRemaining()) {
- if (!outer.next() || outer.getTag() != DERParser.TAG_SET)
- return null;
- DERParser inner = outer.open();
- if (!inner.next() || inner.getTag() != DERParser.TAG_SEQUENCE)
- continue;
- inner = inner.open();
- if (inner.next() && inner.getTag() == TAG_OBJECT_IDENTIFIER
- && inner.isContent(OID_COMMON_NAME)) {
- inner.next(); // read value
- try {
- mostSpecificCN = inner.getString();
- } catch (IllegalArgumentException e) {
- // Ignore unsupported string types.
- }
- }
- }
- return mostSpecificCN;
- }
-
- public static void main(String[] args) throws Exception {
- CertificateFactory factory = CertificateFactory.getInstance("X.509");
- for (String arg : args) {
- InputStream in = new BufferedInputStream(
- new FileInputStream(arg));
- try {
- X509Certificate cert =
- (X509Certificate) factory.generateCertificate(in);
- System.out.format("%s: %s%n", arg, getHostname(cert));
- } finally {
- in.close();
- }
- }
- }
-}
diff --git a/defensive-coding/src/.svn/text-base/TLS-Client-GNUTLS.c.svn-base b/defensive-coding/src/.svn/text-base/TLS-Client-GNUTLS.c.svn-base
deleted file mode 100644
index 4ee2c82..0000000
--- a/defensive-coding/src/.svn/text-base/TLS-Client-GNUTLS.c.svn-base
+++ /dev/null
@@ -1,279 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "tcp_connect.h"
-
-static void __attribute__((noreturn))
-usage(const char *progname)
-{
- fprintf(stderr, "usage: %s HOST PORT\n", progname);
- exit(2);
-}
-
-static void
-info_certificate_override(const char *reason,
- const gnutls_datum_t cert, const char *host)
-{
-#ifdef HAVE_GNUTLS_HASH_FAST
- unsigned char digest[20];
- assert(gnutls_hash_get_len(GNUTLS_DIG_SHA1) == sizeof(digest));
- int ret = gnutls_hash_fast(GNUTLS_DIG_SHA1,
- cert.data, cert.size, digest);
- if (ret < 0) {
- fprintf(stderr, "error: SHA1 digest failed: %s\n", gnutls_strerror(ret));
- exit(1);
- }
- fprintf(stderr, "info: %s override for "
- "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:"
- "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x%s%s%s\n",
- reason,
- digest[0], digest[1], digest[2], digest[3], digest[4],
- digest[5], digest[6], digest[7], digest[8], digest[9],
- digest[10], digest[11], digest[12], digest[13], digest[14],
- digest[15], digest[16], digest[17], digest[18], digest[19],
- host ? " (host name \"" : "", host ? host : "", host ? "\")" : "");
-#endif
-}
-
-/* If certificate host name checking fails, this function is called to
- implement an alternative matching, based on user overrides. */
-static int
-certificate_host_name_override(const gnutls_datum_t cert, const char *host)
-{
- // Just a dummy implementation. User overrides must be keyed both
- // by certificate (or its hash) and host name.
- if (getenv("CERT_OVERRIDE") != NULL) {
- info_certificate_override("host name", cert, host);
- return 1;
- }
- return 0;
-}
-
-/* If certificate validity checking fails, this function provides a
- second chance to accept the peer certificate. If no user overrides
- are needed, this function can be removed. */
-static int
-certificate_validity_override(const gnutls_datum_t cert)
-{
- // Just a dummy implementation for testing. This should check a
- // user-maintained certificate store containing explicitly accepted
- // certificates.
- if (getenv("CERT_OVERRIDE") != NULL) {
- info_certificate_override("certificate validity", cert, NULL);
- return 1;
- }
- return 0;
-}
-
-int
-main(int argc, char **argv)
-{
- if (argc != 3) {
- usage(argv[0]);
- }
-
- //+ Features TLS-GNUTLS-Init
- gnutls_global_init();
- //-
-
- //+ Features TLS-Client-GNUTLS-Credentials
- // Load the trusted CA certificates.
- gnutls_certificate_credentials_t cred = NULL;
- int ret = gnutls_certificate_allocate_credentials (&cred);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_certificate_allocate_credentials: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
- // gnutls_certificate_set_x509_system_trust needs GNUTLS version 3.0
- // or newer, so we hard-code the path to the certificate store
- // instead.
- static const char ca_bundle[] = "/etc/ssl/certs/ca-bundle.crt";
- ret = gnutls_certificate_set_x509_trust_file
- (cred, ca_bundle, GNUTLS_X509_FMT_PEM);
- if (ret == 0) {
- fprintf(stderr, "error: no certificates found in: %s\n", ca_bundle);
- exit(1);
- }
- if (ret < 0) {
- fprintf(stderr, "error: gnutls_certificate_set_x509_trust_files(%s): %s\n",
- ca_bundle, gnutls_strerror(ret));
- exit(1);
- }
- //-
-
- const char *host = argv[1];
- const char *service = argv[2];
- // Perform name lookup, create the TCP client socket, and connect to
- // the server.
- int sockfd = tcp_connect(host, service);
- if (sockfd < 0) {
- perror("connect");
- exit(1);
- }
-
- // Deactivate the Nagle algorithm.
- {
- const int val = 1;
- int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
- if (ret < 0) {
- perror("setsockopt(TCP_NODELAY)");
- exit(1);
- }
- }
-
- //+ Features TLS-Client-GNUTLS-Connect
- // Create the session object.
- gnutls_session_t session;
- ret = gnutls_init(&session, GNUTLS_CLIENT);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_init: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
-
- // Configure the cipher preferences.
- const char *errptr = NULL;
- ret = gnutls_priority_set_direct(session, "NORMAL", &errptr);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_priority_set_direct: %s\n"
- "error: at: \"%s\"\n", gnutls_strerror(ret), errptr);
- exit(1);
- }
-
- // Install the trusted certificates.
- ret = gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, cred);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_credentials_set: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
-
- // Associate the socket with the session object and set the server
- // name.
- gnutls_transport_set_ptr(session, (gnutls_transport_ptr_t)(uintptr_t)sockfd);
- ret = gnutls_server_name_set(session, GNUTLS_NAME_DNS,
- host, strlen(host));
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_server_name_set: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
-
- // Establish the session.
- ret = gnutls_handshake(session);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_handshake: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
- //-
-
- //+ Features TLS-Client-GNUTLS-Verify
- // Obtain the server certificate chain. The server certificate
- // itself is stored in the first element of the array.
- unsigned certslen = 0;
- const gnutls_datum_t *const certs =
- gnutls_certificate_get_peers(session, &certslen);
- if (certs == NULL || certslen == 0) {
- fprintf(stderr, "error: could not obtain peer certificate\n");
- exit(1);
- }
-
- // Validate the certificate chain.
- unsigned status = (unsigned)-1;
- ret = gnutls_certificate_verify_peers2(session, &status);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_certificate_verify_peers2: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
- if (status != 0 && !certificate_validity_override(certs[0])) {
- gnutls_datum_t msg;
-#if GNUTLS_VERSION_AT_LEAST_3_1_4
- int type = gnutls_certificate_type_get (session);
- ret = gnutls_certificate_verification_status_print(status, type, &out, 0);
-#else
- ret = -1;
-#endif
- if (ret == 0) {
- fprintf(stderr, "error: %s\n", msg.data);
- gnutls_free(msg.data);
- exit(1);
- } else {
- fprintf(stderr, "error: certificate validation failed with code 0x%x\n",
- status);
- exit(1);
- }
- }
- //-
-
- //+ Features TLS-Client-GNUTLS-Match
- // Match the peer certificate against the host name.
- // We can only obtain a set of DER-encoded certificates from the
- // session object, so we have to re-parse the peer certificate into
- // a certificate object.
- gnutls_x509_crt_t cert;
- ret = gnutls_x509_crt_init(&cert);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_x509_crt_init: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
- // The peer certificate is the first certificate in the list.
- ret = gnutls_x509_crt_import(cert, certs, GNUTLS_X509_FMT_DER);
- if (ret != GNUTLS_E_SUCCESS) {
- fprintf(stderr, "error: gnutls_x509_crt_import: %s\n",
- gnutls_strerror(ret));
- exit(1);
- }
- ret = gnutls_x509_crt_check_hostname(cert, host);
- if (ret == 0 && !certificate_host_name_override(certs[0], host)) {
- fprintf(stderr, "error: host name does not match certificate\n");
- exit(1);
- }
- gnutls_x509_crt_deinit(cert);
- //-
-
- //+ Features TLS-GNUTLS-Use
- char buf[4096];
- snprintf(buf, sizeof(buf), "GET / HTTP/1.0\r\nHost: %s\r\n\r\n", host);
- ret = gnutls_record_send(session, buf, strlen(buf));
- if (ret < 0) {
- fprintf(stderr, "error: gnutls_record_send: %s\n", gnutls_strerror(ret));
- exit(1);
- }
- ret = gnutls_record_recv(session, buf, sizeof(buf));
- if (ret < 0) {
- fprintf(stderr, "error: gnutls_record_recv: %s\n", gnutls_strerror(ret));
- exit(1);
- }
- //-
- write(STDOUT_FILENO, buf, ret);
-
- //+ Features TLS-GNUTLS-Disconnect
- // Initiate an orderly connection shutdown.
- ret = gnutls_bye(session, GNUTLS_SHUT_RDWR);
- if (ret < 0) {
- fprintf(stderr, "error: gnutls_bye: %s\n", gnutls_strerror(ret));
- exit(1);
- }
- // Free the session object.
- gnutls_deinit(session);
- //-
-
- //+ Features TLS-GNUTLS-Credentials-Close
- gnutls_certificate_free_credentials(cred);
- //-
-}
diff --git a/defensive-coding/src/.svn/text-base/TLS-Client-NSS.c.svn-base b/defensive-coding/src/.svn/text-base/TLS-Client-NSS.c.svn-base
deleted file mode 100644
index de9e6db..0000000
--- a/defensive-coding/src/.svn/text-base/TLS-Client-NSS.c.svn-base
+++ /dev/null
@@ -1,297 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "tcp_connect.h"
-
-//+ Features TLS-NSS-Includes
-// NSPR include files
-#include
-#include
-
-// NSS include files
-#include
-#include
-#include
-#include
-#include
-
-// Private API, no other way to turn a POSIX file descriptor into an
-// NSPR handle.
-NSPR_API(PRFileDesc*) PR_ImportTCPSocket(int);
-//-
-
-static void __attribute__((noreturn))
-usage(const char *progname)
-{
- fprintf(stderr, "usage: %s HOST PORT\n", progname);
- exit(2);
-}
-
-SECStatus
-bad_certificate(void *arg, PRFileDesc *fd)
-{
- const char *host = arg;
- CERTCertificate *cert = SSL_PeerCertificate(fd);
- if (cert == NULL) {
- return SECFailure;
- }
-
- // Just a dummy implementation. User overrides must be keyed both
- // by certificate (or its hash) and host name.
- if (getenv("CERT_OVERRIDE") != NULL) {
- unsigned char sha1[20];
- if (PK11_HashBuf(SEC_OID_SHA1, sha1,
- cert->derCert.data, cert->derCert.len) != SECSuccess) {
- fprintf(stderr, "error: could not hash certificate\n");
- return SECFailure;
- }
- SECItem si = {.data = sha1, .len = sizeof(sha1)};
- char *hex = CERT_Hexify(&si, 1);
- if (hex == NULL) {
- fprintf(stderr, "error: could not hash certificate\n");
- return SECFailure;
- }
- fprintf(stderr, "info: certificate override for %s (host name %s)\n",
- hex, host);
- PORT_Free(hex);
- CERT_DestroyCertificate(cert);
- return SECSuccess;
- }
- CERT_DestroyCertificate(cert);
- return SECFailure;
-}
-
-int
-main(int argc, char **argv)
-{
- if (argc != 3) {
- usage(argv[0]);
- }
-
- const char *host = argv[1];
- const char *service = argv[2];
- // Perform name lookup, create the TCP client socket, and connect to
- // the server.
- int sockfd = tcp_connect(host, service);
- if (sockfd < 0) {
- perror("connect");
- exit(1);
- }
-
- // Deactivate the Nagle algorithm.
- {
- const int val = 1;
- int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
- if (ret < 0) {
- perror("setsockopt(TCP_NODELAY)");
- exit(1);
- }
- }
-
- //+ Features TLS-NSS-Init
- PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
- NSSInitContext *const ctx =
- NSS_InitContext("sql:/etc/pki/nssdb", "", "", "", NULL,
- NSS_INIT_READONLY | NSS_INIT_PK11RELOAD);
- if (ctx == NULL) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: NSPR error code %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
-
- // Ciphers to enable.
- static const PRUint16 good_ciphers[] = {
- TLS_RSA_WITH_AES_128_CBC_SHA,
- TLS_RSA_WITH_AES_256_CBC_SHA,
- SSL_RSA_WITH_3DES_EDE_CBC_SHA,
- SSL_NULL_WITH_NULL_NULL // sentinel
- };
-
- // Check if the current policy allows any strong ciphers. If it
- // doesn't, switch to the "domestic" (unrestricted) policy. This is
- // not thread-safe and has global impact. Consequently, we only do
- // it if absolutely necessary.
- int found_good_cipher = 0;
- for (const PRUint16 *p = good_ciphers; *p != SSL_NULL_WITH_NULL_NULL;
- ++p) {
- PRInt32 policy;
- if (SSL_CipherPolicyGet(*p, &policy) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: policy for cipher %u: error %d: %s\n",
- (unsigned)*p, err, PR_ErrorToName(err));
- exit(1);
- }
- if (policy == SSL_ALLOWED) {
- fprintf(stderr, "info: found cipher %x\n", (unsigned)*p);
- found_good_cipher = 1;
- break;
- }
- }
- if (!found_good_cipher) {
- if (NSS_SetDomesticPolicy() != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: NSS_SetDomesticPolicy: error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- }
-
- // Initialize the trusted certificate store.
- char module_name[] = "library=libnssckbi.so name=\"Root Certs\"";
- SECMODModule *module = SECMOD_LoadUserModule(module_name, NULL, PR_FALSE);
- if (module == NULL || !module->loaded) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: NSPR error code %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- //-
-
- //+ Features TLS-Client-NSS-Connect
- // Wrap the POSIX file descriptor. This is an internal NSPR
- // function, but it is very unlikely to change.
- PRFileDesc* nspr = PR_ImportTCPSocket(sockfd);
- sockfd = -1; // Has been taken over by NSPR.
-
- // Add the SSL layer.
- {
- PRFileDesc *model = PR_NewTCPSocket();
- PRFileDesc *newfd = SSL_ImportFD(NULL, model);
- if (newfd == NULL) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: NSPR error code %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- model = newfd;
- newfd = NULL;
- if (SSL_OptionSet(model, SSL_ENABLE_SSL2, PR_FALSE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: set SSL_ENABLE_SSL2 error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- if (SSL_OptionSet(model, SSL_V2_COMPATIBLE_HELLO, PR_FALSE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: set SSL_V2_COMPATIBLE_HELLO error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- if (SSL_OptionSet(model, SSL_ENABLE_DEFLATE, PR_FALSE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: set SSL_ENABLE_DEFLATE error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
-
- // Disable all ciphers (except RC4-based ciphers, for backwards
- // compatibility).
- const PRUint16 *const ciphers = SSL_GetImplementedCiphers();
- for (unsigned i = 0; i < SSL_GetNumImplementedCiphers(); i++) {
- if (ciphers[i] != SSL_RSA_WITH_RC4_128_SHA
- && ciphers[i] != SSL_RSA_WITH_RC4_128_MD5) {
- if (SSL_CipherPrefSet(model, ciphers[i], PR_FALSE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: disable cipher %u: error %d: %s\n",
- (unsigned)ciphers[i], err, PR_ErrorToName(err));
- exit(1);
- }
- }
- }
-
- // Enable the strong ciphers.
- for (const PRUint16 *p = good_ciphers; *p != SSL_NULL_WITH_NULL_NULL;
- ++p) {
- if (SSL_CipherPrefSet(model, *p, PR_TRUE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: enable cipher %u: error %d: %s\n",
- (unsigned)*p, err, PR_ErrorToName(err));
- exit(1);
- }
- }
-
- // Allow overriding invalid certificate.
- if (SSL_BadCertHook(model, bad_certificate, (char *)host) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: SSL_BadCertHook error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
-
- newfd = SSL_ImportFD(model, nspr);
- if (newfd == NULL) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: SSL_ImportFD error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- nspr = newfd;
- PR_Close(model);
- }
-
- // Perform the handshake.
- if (SSL_ResetHandshake(nspr, PR_FALSE) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: SSL_ResetHandshake error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- if (SSL_SetURL(nspr, host) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: SSL_SetURL error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- if (SSL_ForceHandshake(nspr) != SECSuccess) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: SSL_ForceHandshake error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- //-
-
- //+ Features TLS-NSS-Use
- char buf[4096];
- snprintf(buf, sizeof(buf), "GET / HTTP/1.0\r\nHost: %s\r\n\r\n", host);
- PRInt32 ret = PR_Write(nspr, buf, strlen(buf));
- if (ret < 0) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: PR_Write error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- ret = PR_Read(nspr, buf, sizeof(buf));
- if (ret < 0) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: PR_Read error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- //-
- write(STDOUT_FILENO, buf, ret);
-
- //+ Features TLS-Client-NSS-Close
- // Send close_notify alert.
- if (PR_Shutdown(nspr, PR_SHUTDOWN_BOTH) != PR_SUCCESS) {
- const PRErrorCode err = PR_GetError();
- fprintf(stderr, "error: PR_Read error %d: %s\n",
- err, PR_ErrorToName(err));
- exit(1);
- }
- // Closes the underlying POSIX file descriptor, too.
- PR_Close(nspr);
- //-
-
- //+ Features TLS-NSS-Close
- SECMOD_DestroyModule(module);
- NSS_ShutdownContext(ctx);
- //-
-
- return 0;
-}
diff --git a/defensive-coding/src/.svn/text-base/TLS-Client-OpenSSL.c.svn-base b/defensive-coding/src/.svn/text-base/TLS-Client-OpenSSL.c.svn-base
deleted file mode 100644
index b8a279a..0000000
--- a/defensive-coding/src/.svn/text-base/TLS-Client-OpenSSL.c.svn-base
+++ /dev/null
@@ -1,329 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include "tcp_connect.h"
-
-int X509_check_host(X509 *, const unsigned char *chk, size_t chklen,
- unsigned int flags);
-
-static void __attribute__((noreturn))
-usage(const char *progname)
-{
- fprintf(stderr, "usage: %s HOST PORT\n", progname);
- exit(2);
-}
-
-static void
-info_certificate_override(const char *reason, X509 *crt, const char *host)
-{
- int derlen = i2d_X509(crt, NULL);
- if (derlen < 0) {
- fprintf(stderr, "error: could not DER-encode certificate\n");
- exit(1);
- }
- unsigned char *der = malloc(derlen);
- if (der == NULL) {
- perror("malloc");
- exit(1);
- }
- {
- unsigned char *p = der;
- if (i2d_X509(crt, &p) < 0) {
- fprintf(stderr, "error: could not DER-encode certificate\n");
- exit(1);
- }
- }
- unsigned char digest[20];
- SHA1(der, derlen, digest);
- fprintf(stderr, "info: %s override for "
- "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:"
- "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x%s%s%s\n",
- reason,
- digest[0], digest[1], digest[2], digest[3], digest[4],
- digest[5], digest[6], digest[7], digest[8], digest[9],
- digest[10], digest[11], digest[12], digest[13], digest[14],
- digest[15], digest[16], digest[17], digest[18], digest[19],
- host ? " (host name \"" : "", host ? host : "", host ? "\")" : "");
- free(der);
-}
-
-/* If certificate host name checking fails, this function is called to
- implement an alternative matching, based on user overrides. */
-static int
-certificate_host_name_override(X509 *crt, const char *host)
-{
- // Just a dummy implementation. User overrides must be keyed both
- // by certificate (or its hash) and host name.
- if (getenv("CERT_OVERRIDE") != NULL) {
- info_certificate_override("host name", crt, host);
- return 1;
- }
- return 0;
-}
-
-/* If certificate validity checking fails, this function provides a
- second chance to accept the peer certificate. If no user overrides
- are needed, this function can be removed. */
-static int
-certificate_validity_override(X509 *crt)
-{
- // Just a dummy implementation for testing. This should check a
- // user-maintained certificate store containing explicitly accepted
- // certificates.
- if (getenv("CERT_OVERRIDE") != NULL) {
- info_certificate_override("certificate validity", crt, NULL);
- return 1;
- }
- return 0;
-}
-
-static void __attribute__((noreturn))
-failure(const char *msg)
-{
- fprintf(stderr, "error: %s: %s\n", msg, strerror(errno));
- exit(2);
-}
-
-//+ Features TLS-OpenSSL-Errors
-static void __attribute__((noreturn))
-ssl_print_error_and_exit(SSL *ssl, const char *op, int ret)
-{
- int subcode = SSL_get_error(ssl, ret);
- switch (subcode) {
- case SSL_ERROR_NONE:
- fprintf(stderr, "error: %s: no error to report\n", op);
- break;
- case SSL_ERROR_WANT_READ:
- case SSL_ERROR_WANT_WRITE:
- case SSL_ERROR_WANT_X509_LOOKUP:
- case SSL_ERROR_WANT_CONNECT:
- case SSL_ERROR_WANT_ACCEPT:
- fprintf(stderr, "error: %s: invalid blocking state %d\n", op, subcode);
- break;
- case SSL_ERROR_SSL:
- fprintf(stderr, "error: %s: TLS layer problem\n", op);
- case SSL_ERROR_SYSCALL:
- fprintf(stderr, "error: %s: system call failed: %s\n", op, strerror(errno));
- break;
- case SSL_ERROR_ZERO_RETURN:
- fprintf(stderr, "error: %s: zero return\n", op);
- }
- exit(1);
-}
-//-
-
-int
-main(int argc, char **argv)
-{
- if (argc != 3) {
- usage(argv[0]);
- }
-
- BIO *bio_err=BIO_new_fp(stderr, BIO_NOCLOSE);
- if (bio_err == NULL) {
- perror("BIO_ne_fp(stderr)");
- exit(1);
- }
-
- //+ Features TLS-Client-OpenSSL-Init
- // The following call prints an error message and calls exit() if
- // the OpenSSL configuration file is unreadable.
- OPENSSL_config(NULL);
- // Provide human-readable error messages.
- SSL_load_error_strings();
- // Register ciphers.
- SSL_library_init();
- //-
-
- //+ Features TLS-Client-OpenSSL-CTX
- // Configure a client connection context. Send a hendshake for the
- // highest supported TLS version, and disable compression.
- const SSL_METHOD *const req_method = SSLv23_client_method();
- SSL_CTX *const ctx = SSL_CTX_new(req_method);
- if (ctx == NULL) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_COMPRESSION);
-
- // Adjust the ciphers list based on a whitelist. First enable all
- // ciphers of at least medium strength, to get the list which is
- // compiled into OpenSSL.
- if (SSL_CTX_set_cipher_list(ctx, "HIGH:MEDIUM") != 1) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- {
- // Create a dummy SSL session to obtain the cipher list.
- SSL *ssl = SSL_new(ctx);
- if (ssl == NULL) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- STACK_OF(SSL_CIPHER) *active_ciphers = SSL_get_ciphers(ssl);
- if (active_ciphers == NULL) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- // Whitelist of candidate ciphers.
- static const char *const candidates[] = {
- "AES128-GCM-SHA256", "AES128-SHA256", "AES256-SHA256", // strong ciphers
- "AES128-SHA", "AES256-SHA", // strong ciphers, also in older versions
- "RC4-SHA", "RC4-MD5", // backwards compatibility, supposed to be weak
- "DES-CBC3-SHA", "DES-CBC3-MD5", // more backwards compatibility
- NULL
- };
- // Actually selected ciphers.
- char ciphers[300];
- ciphers[0] = '\0';
- for (const char *const *c = candidates; *c; ++c) {
- for (int i = 0; i < sk_SSL_CIPHER_num(active_ciphers); ++i) {
- if (strcmp(SSL_CIPHER_get_name(sk_SSL_CIPHER_value(active_ciphers, i)),
- *c) == 0) {
- if (*ciphers) {
- strcat(ciphers, ":");
- }
- strcat(ciphers, *c);
- break;
- }
- }
- }
- SSL_free(ssl);
- // Apply final cipher list.
- if (SSL_CTX_set_cipher_list(ctx, ciphers) != 1) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- }
-
- // Load the set of trusted root certificates.
- if (!SSL_CTX_set_default_verify_paths(ctx)) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- //-
-
- const char *host = argv[1];
- const char *service = argv[2];
- // Perform name lookup, create the TCP client socket, and connect to
- // the server.
- int sockfd = tcp_connect(host, service);
- if (sockfd < 0) {
- perror("connect");
- exit(1);
- }
- // Deactivate the Nagle algorithm.
- //+ Features TLS-Nagle
- const int val = 1;
- int ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
- if (ret < 0) {
- perror("setsockopt(TCP_NODELAY)");
- exit(1);
- }
- //-
- //+ Features TLS-Client-OpenSSL-Connect
- // Create the connection object.
- SSL *ssl = SSL_new(ctx);
- if (ssl == NULL) {
- ERR_print_errors(bio_err);
- exit(1);
- }
- SSL_set_fd(ssl, sockfd);
-
- // Enable the ServerNameIndication extension
- if (!SSL_set_tlsext_host_name(ssl, host)) {
- ERR_print_errors(bio_err);
- exit(1);
- }
-
- // Perform the TLS handshake with the server.
- ret = SSL_connect(ssl);
- if (ret != 1) {
- // Error status can be 0 or negative.
- ssl_print_error_and_exit(ssl, "SSL_connect", ret);
- }
-
- // Obtain the server certificate.
- X509 *peercert = SSL_get_peer_certificate(ssl);
- if (peercert == NULL) {
- fprintf(stderr, "peer certificate missing");
- exit(1);
- }
-
- // Check the certificate verification result. Allow an explicit
- // certificate validation override in case verification fails.
- int verifystatus = SSL_get_verify_result(ssl);
- if (verifystatus != X509_V_OK && !certificate_validity_override(peercert)) {
- fprintf(stderr, "SSL_connect: verify result: %s\n",
- X509_verify_cert_error_string(verifystatus));
- exit(1);
- }
-
- // Check if the server certificate matches the host name used to
- // establish the connection.
- // FIXME: Currently needs OpenSSL 1.1.
- if (X509_check_host(peercert, (const unsigned char *)host, strlen(host),
- 0) != 1
- && !certificate_host_name_override(peercert, host)) {
- fprintf(stderr, "SSL certificate does not match host name\n");
- exit(1);
- }
-
- X509_free(peercert);
-
- //-
- //+ Features TLS-Client-OpenSSL-Connection-Use
- const char *const req = "GET / HTTP/1.0\r\n\r\n";
- if (SSL_write(ssl, req, strlen(req)) < 0) {
- ssl_print_error_and_exit(ssl, "SSL_write", ret);
- }
- char buf[4096];
- ret = SSL_read(ssl, buf, sizeof(buf));
- if (ret < 0) {
- ssl_print_error_and_exit(ssl, "SSL_read", ret);
- }
- //-
- write(STDOUT_FILENO, buf, ret);
- //+ Features TLS-OpenSSL-Connection-Close
- // Send the close_notify alert.
- ret = SSL_shutdown(ssl);
- switch (ret) {
- case 1:
- // A close_notify alert has already been received.
- break;
- case 0:
- // Wait for the close_notify alert from the peer.
- ret = SSL_shutdown(ssl);
- switch (ret) {
- case 0:
- fprintf(stderr, "info: second SSL_shutdown returned zero\n");
- break;
- case 1:
- break;
- default:
- ssl_print_error_and_exit(ssl, "SSL_shutdown 2", ret);
- }
- break;
- default:
- ssl_print_error_and_exit(ssl, "SSL_shutdown 1", ret);
- }
- SSL_free(ssl);
- close(sockfd);
- //-
- //+ Features TLS-OpenSSL-Context-Close
- SSL_CTX_free(ctx);
- //-
- BIO_free(bio_err);
- return 0;
-}
diff --git a/defensive-coding/src/.svn/text-base/TLS-Client-Python.py.svn-base b/defensive-coding/src/.svn/text-base/TLS-Client-Python.py.svn-base
deleted file mode 100644
index c91f47b..0000000
--- a/defensive-coding/src/.svn/text-base/TLS-Client-Python.py.svn-base
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python
-
-# WARNING: See the guidelines for problems with this code!
-
-import socket
-import ssl
-import sys
-
-_, host, port = sys.argv
-
-#+ Features TLS-Client-Python-check_host_name
-def check_host_name(peercert, name):
- """Simple certificate/host name checker. Returns True if the
- certificate matches, False otherwise. Does not support
- wildcards."""
- # Check that the peer has supplied a certificate.
- # None/{} is not acceptable.
- if not peercert:
- return False
- if peercert.has_key("subjectAltName"):
- for typ, val in peercert["subjectAltName"]:
- if typ == "DNS" and val == name:
- return True
- else:
- # Only check the subject DN if there is no subject alternative
- # name.
- cn = None
- for attr, val in peercert["subject"]:
- # Use most-specific (last) commonName attribute.
- if attr == "commonName":
- cn = val
- if cn is not None:
- return cn == name
- return False
-#-
-
-# WARNING: See the guidelines for problems with this code!
-
-sock = socket.create_connection((host, port))
-#+ Features TLS-Client-Python-Connect
-sock = ssl.wrap_socket(sock,
- ciphers="HIGH:-aNULL:-eNULL:-PSK:RC4-SHA:RC4-MD5",
- ssl_version=ssl.PROTOCOL_TLSv1,
- cert_reqs=ssl.CERT_REQUIRED,
- ca_certs='/etc/ssl/certs/ca-bundle.crt')
-# getpeercert() triggers the handshake as a side effect.
-if not check_host_name(sock.getpeercert(), host):
- raise IOError("peer certificate does not match host name")
-#-
-#+ Features TLS-Python-Use
-sock.write("GET / HTTP/1.1\r\nHost: " + host + "\r\n\r\n")
-print sock.read()
-#-
-#+ Features TLS-Python-Close
-sock.close()
-#-
diff --git a/defensive-coding/src/.svn/text-base/TLSClientOpenJDK.java.svn-base b/defensive-coding/src/.svn/text-base/TLSClientOpenJDK.java.svn-base
deleted file mode 100644
index f791857..0000000
--- a/defensive-coding/src/.svn/text-base/TLSClientOpenJDK.java.svn-base
+++ /dev/null
@@ -1,262 +0,0 @@
-//+ Features TLS-Client-OpenJDK-Import
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLParameters;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import sun.security.util.HostnameChecker;
-//-
-
-import java.security.MessageDigest;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.nio.charset.Charset;
-
-public class TLSClientOpenJDK {
- public static void main(String[] args) throws Exception {
- if (args.length == 0) {
- usage();
- }
- int index = 0;
- byte[] certHash = null;
- if (args[index].equals("--accept")) {
- ++index;
- if (args.length != 4) {
- usage();
- }
- certHash = decodeHex(args[index++]);
- } else if (args.length != 2) {
- usage();
- }
-
- String host = args[index++];
- int port;
- try {
- port = Integer.parseInt(args[index]);
- } catch (NumberFormatException e) {
- port = 0;
- }
- if (port <= 0 || port > 65535) {
- usage();
- }
-
- SSLContext ctx;
- if (certHash == null) {
- ctx = createContext();
- } else {
- ctx = createContextForCertificate(certHash);
- }
-
- SSLParameters params = createParameters(ctx);
- if (certHash == null) {
- params.setEndpointIdentificationAlgorithm(null);
- }
- runDemo(ctx, params, host, port);
- }
-
- private static SSLContext createContext() throws Exception {
- //+ Features TLS-Client-OpenJDK-Context
- // Create the context. Specify the SunJSSE provider to avoid
- // picking up third-party providers. Try the TLS 1.2 provider
- // first, then fall back to TLS 1.0.
- SSLContext ctx;
- try {
- ctx = SSLContext.getInstance("TLSv1.2", "SunJSSE");
- } catch (NoSuchAlgorithmException e) {
- try {
- ctx = SSLContext.getInstance("TLSv1", "SunJSSE");
- } catch (NoSuchAlgorithmException e1) {
- // The TLS 1.0 provider should always be available.
- throw new AssertionError(e1);
- } catch (NoSuchProviderException e1) {
- throw new AssertionError(e1);
- }
- } catch (NoSuchProviderException e) {
- // The SunJSSE provider should always be available.
- throw new AssertionError(e);
- }
- ctx.init(null, null, null);
- //-
- return ctx;
- }
-
- static
- //+ Features TLS-Client-OpenJDK-MyTrustManager
- public class MyTrustManager implements X509TrustManager {
- private final byte[] certHash;
-
- public MyTrustManager(byte[] certHash) throws Exception {
- this.certHash = certHash;
- }
-
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType)
- throws CertificateException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] chain,
- String authType) throws CertificateException {
- byte[] digest = getCertificateDigest(chain[0]);
- String digestHex = formatHex(digest);
-
- if (Arrays.equals(digest, certHash)) {
- System.err.println("info: accepting certificate: " + digestHex);
- } else {
- throw new CertificateException("certificate rejected: " +
- digestHex);
- }
- }
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
- }
- //-
-
- private static SSLContext createContextForCertificate(byte[] certHash)
- throws Exception {
- //+ Features TLS-Client-OpenJDK-Context_For_Cert
- SSLContext ctx;
- try {
- ctx = SSLContext.getInstance("TLSv1.2", "SunJSSE");
- } catch (NoSuchAlgorithmException e) {
- try {
- ctx = SSLContext.getInstance("TLSv1", "SunJSSE");
- } catch (NoSuchAlgorithmException e1) {
- throw new AssertionError(e1);
- } catch (NoSuchProviderException e1) {
- throw new AssertionError(e1);
- }
- } catch (NoSuchProviderException e) {
- throw new AssertionError(e);
- }
- MyTrustManager tm = new MyTrustManager(certHash);
- ctx.init(null, new TrustManager[] {tm}, null);
- //-
- return ctx;
- }
-
- private static SSLParameters createParameters(SSLContext ctx)
- throws Exception {
- //+ Features TLS-OpenJDK-Parameters
- // Prepare TLS parameters. These have to applied to every TLS
- // socket before the handshake is triggered.
- SSLParameters params = ctx.getDefaultSSLParameters();
- // Do not send an SSL-2.0-compatible Client Hello.
- ArrayList protocols = new ArrayList(
- Arrays.asList(params.getProtocols()));
- protocols.remove("SSLv2Hello");
- params.setProtocols(protocols.toArray(new String[protocols.size()]));
- // Adjust the supported ciphers.
- ArrayList ciphers = new ArrayList(
- Arrays.asList(params.getCipherSuites()));
- ciphers.retainAll(Arrays.asList(
- "TLS_RSA_WITH_AES_128_CBC_SHA256",
- "TLS_RSA_WITH_AES_256_CBC_SHA256",
- "TLS_RSA_WITH_AES_256_CBC_SHA",
- "TLS_RSA_WITH_AES_128_CBC_SHA",
- "SSL_RSA_WITH_3DES_EDE_CBC_SHA",
- "SSL_RSA_WITH_RC4_128_SHA1",
- "SSL_RSA_WITH_RC4_128_MD5",
- "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"));
- params.setCipherSuites(ciphers.toArray(new String[ciphers.size()]));
- //-
- // Activate host name verification. Requires OpenJDK 7.
- //+ Features TLS-Client-OpenJDK-Hostname
- params.setEndpointIdentificationAlgorithm("HTTPS");
- //-
- return params;
- }
-
- private static void runDemo(SSLContext ctx, SSLParameters params,
- String host, int port) throws Exception {
- // Note: The code below misses the close() call, to avoid
- // messing up the indentation in the generated documentation.
-
- //+ Features TLS-Client-OpenJDK-Connect
- // Create the socket and connect it at the TCP layer.
- SSLSocket socket = (SSLSocket) ctx.getSocketFactory()
- .createSocket(host, port);
-
- // Disable the Nagle algorithm.
- socket.setTcpNoDelay(true);
-
- // Adjust ciphers and protocols.
- socket.setSSLParameters(params);
-
- // Perform the handshake.
- socket.startHandshake();
-
- // Validate the host name. The match() method throws
- // CertificateException on failure.
- X509Certificate peer = (X509Certificate)
- socket.getSession().getPeerCertificates()[0];
- // This is the only way to perform host name checking on OpenJDK 6.
- HostnameChecker.getInstance(HostnameChecker.TYPE_TLS).match(
- host, peer);
- //-
-
- //+ Features TLS-Client-OpenJDK-Use
- socket.getOutputStream().write("GET / HTTP/1.0\r\n\r\n"
- .getBytes(Charset.forName("UTF-8")));
- byte[] buffer = new byte[4096];
- int count = socket.getInputStream().read(buffer);
- System.out.write(buffer, 0, count);
- //-
- }
-
- private static byte[] decodeHex(String s) {
- byte[] result = new byte[32];
- if (s.length() != result.length * 2) {
- throw new IllegalArgumentException(s);
- }
- for (int i = 0; i < result.length; ++i) {
- int a = Character.digit(s.charAt(2 * i), 16);
- int b = Character.digit(s.charAt(2 * i + 1), 16);
- if (a < 0 || b < 0) {
- throw new IllegalArgumentException(s);
- }
- result[i] = (byte) ((a << 4) | b);
- }
- return result;
- }
-
- private static String formatHex(byte[] digest) {
- String digestHex;
- {
- StringBuilder sb = new StringBuilder(digest.length * 2);
- for (byte b : digest) {
- sb.append(String.format("%02x", b & 0xFF));
- }
- digestHex = sb.toString();
- }
- return digestHex;
- }
-
- private static byte[] getCertificateDigest(X509Certificate chain)
- throws AssertionError, CertificateEncodingException {
- MessageDigest md;
- try {
- md = MessageDigest.getInstance("SHA-256");
- } catch (NoSuchAlgorithmException e1) {
- throw new AssertionError(e1);
- }
- byte[] digest = md.digest(chain.getEncoded());
- return digest;
- }
-
- private static void usage() {
- System.err.format("usage: %s [--accept CERT-HASH] HOST PORT%n",
- TLSClientOpenJDK.class.getName());
- System.exit(1);
- }
-}
diff --git a/defensive-coding/src/.svn/text-base/XML-Parser-Expat.c.svn-base b/defensive-coding/src/.svn/text-base/XML-Parser-Expat.c.svn-base
deleted file mode 100644
index 0f2c609..0000000
--- a/defensive-coding/src/.svn/text-base/XML-Parser-Expat.c.svn-base
+++ /dev/null
@@ -1,135 +0,0 @@
-#include
-#include
-#include
-#include
-
-#include
-
-static void
-print_escaped(const char *p, size_t len)
-{
- const char *end = p + len;
- while (p < end) {
- unsigned char ch = *p;
- // Technically, we should also match on certain UTF-8 sequences,
- // but this is not implemented here.
- if ((0x01 <= ch && ch <= 0x08)
- || ch == 0x0B || ch == 0x0C
- || (0x0E <= ch && ch <= 0x1F)
- || ch == '"' || ch == '\'' || ch == '<' || ch == '>' || ch == '"'
- || ch == 0x7F) {
- printf("%d;", (int)ch);
- } else {
- putc(ch, stdout);
- }
- ++p;
- }
-}
-
-static void
-StartElementHandler(void *userData,
- const XML_Char *name, const XML_Char **attrs)
-{
- printf("<%s", name);
- while (*attrs) {
- printf(" %s=\"", *attrs);
- ++attrs;
- print_escaped(*attrs, strlen(*attrs));
- ++attrs;
- putc('"', stdout);
- }
- putc('>', stdout);
-}
-
-static void
-EndElementHandler(void *userData, const XML_Char *name)
-{
- printf("%s>", name);
-}
-
-static void
-CharacterDataHandler(void *userData, const XML_Char *s, int len)
-{
- print_escaped(s, len);
-}
-
-static void
-CommentHandler(void *userData, const XML_Char *s)
-{
- printf("", s);
-}
-
-//+ Tasks Serialization-XML-Expat-EntityDeclHandler
-// Stop the parser when an entity declaration is encountered.
-static void
-EntityDeclHandler(void *userData,
- const XML_Char *entityName, int is_parameter_entity,
- const XML_Char *value, int value_length,
- const XML_Char *base, const XML_Char *systemId,
- const XML_Char *publicId, const XML_Char *notationName)
-{
- XML_StopParser((XML_Parser)userData, XML_FALSE);
-}
-//-
-
-int
-main(int argc, char **argv)
-{
- if (argc != 2) {
- fprintf(stderr, "usage: %s XML-FILE\n", argv[0]);
- return 2;
- }
-
- const char *file = argv[1];
- int fd = open(file, O_RDONLY | O_CLOEXEC);
- if (fd < 0) {
- perror("open");
- return 1;
- }
-
- //+ Tasks Serialization-XML-Expat-Create
- XML_Parser parser = XML_ParserCreate("UTF-8");
- if (parser == NULL) {
- fprintf(stderr, "XML_ParserCreate failed\n");
- close(fd);
- exit(1);
- }
- // EntityDeclHandler needs a reference to the parser to stop
- // parsing.
- XML_SetUserData(parser, parser);
- // Disable entity processing, to inhibit entity expansion.
- XML_SetEntityDeclHandler(parser, EntityDeclHandler);
- //-
-
- // Handlers for demonstration purposes.
- XML_SetElementHandler(parser, StartElementHandler, EndElementHandler);
- XML_SetCharacterDataHandler(parser, CharacterDataHandler);
- XML_SetCommentHandler(parser, CommentHandler);
-
-
- char buffer[8192];
- ssize_t ret;
- do {
- ret = read(fd, buffer, sizeof(buffer));
- if (ret < 0) {
- perror("read");
- XML_ParserFree(parser);
- close(fd);
- return 1;
- }
- enum XML_Status status = XML_Parse(parser, buffer, ret, ret == 0);
- if (status != XML_STATUS_OK) {
- fprintf(stderr, "%s:%zu:%zu: error: %s\n",
- file, XML_GetCurrentLineNumber(parser),
- XML_GetCurrentColumnNumber(parser),
- XML_ErrorString(XML_GetErrorCode(parser)));
- XML_ParserFree(parser);
- close(fd);
- return 1;
- }
- } while (ret != 0);
-
- XML_ParserFree(parser);
- close(fd);
- return 0;
-}
diff --git a/defensive-coding/src/.svn/text-base/XMLParserOpenJDK.java.svn-base b/defensive-coding/src/.svn/text-base/XMLParserOpenJDK.java.svn-base
deleted file mode 100644
index be3bef3..0000000
--- a/defensive-coding/src/.svn/text-base/XMLParserOpenJDK.java.svn-base
+++ /dev/null
@@ -1,286 +0,0 @@
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-//+ Tasks Serialization-XML-OpenJDK-Imports
-import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Validator;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.ls.LSInput;
-import org.w3c.dom.ls.LSResourceResolver;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-//-
-
-public final class XMLParserOpenJDK {
- public static void main(String[] args) throws Exception {
- String validationType = args[0];
- File schema = new File(args[1]);
- String file = args[2];
- if (validationType.equals("OpenJDK-XSD-SAX")) {
- validateXSDSAX(schema, file);
- } else if (validationType.equals("OpenJDK-RNG-SAX")) {
- validateSAX(XMLConstants.RELAXNG_NS_URI, schema, file);
- } else if (validationType.equals("OpenJDK-DTD-SAX")) {
- validateSAX(XMLConstants.XML_DTD_NS_URI, schema, file);
- } else if (validationType.equals("OpenJDK-XSD-DOM")) {
- validateXSDDOM(schema, file);
- } else if (validationType.equals("OpenJDK-RNG-DOM")) {
- validateDOM(XMLConstants.W3C_XML_SCHEMA_NS_URI,
- schema, file, false);
- } else if (validationType.equals("OpenJDK-DTD-DOM")) {
- validateDOM(XMLConstants.XML_DTD_NS_URI, schema, file, false);
- } else if (validationType.equals("OpenJDK-XSD-DOM-Validate")) {
- validateDOM(XMLConstants.W3C_XML_SCHEMA_NS_URI,
- schema, file, true);
- } else if (validationType.equals("OpenJDK-RNG-DOM-Validate")) {
- validateDOM(XMLConstants.W3C_XML_SCHEMA_NS_URI,
- schema, file, true);
- } else if (validationType.equals("OpenJDK-DTD-DOM-Validate")) {
- validateDOM(XMLConstants.XML_DTD_NS_URI, schema, file, true);
- } else if (validationType.equals("OpenJDK-SAX")) {
- parseSAX(file, false);
- } else if (validationType.equals("OpenJDK-DOM")) {
- parseDOM(file, false);
- } else if (validationType.equals("OpenJDK-SAX-Validate")) {
- parseSAX(file, true);
- } else if (validationType.equals("OpenJDK-DOM-Validate")) {
- parseDOM(file, true);
- } else {
- throw new Exception("invalid validator: " + validationType);
- }
- }
-
- static
- //+ Tasks Serialization-XML-OpenJDK-NoResourceResolver
- class NoResourceResolver implements LSResourceResolver {
- @Override
- public LSInput resolveResource(String type, String namespaceURI,
- String publicId, String systemId, String baseURI) {
- // Throwing an exception stops validation.
- throw new RuntimeException(String.format(
- "resolution attempt: type=%s namespace=%s " +
- "publicId=%s systemId=%s baseURI=%s",
- type, namespaceURI, publicId, systemId, baseURI));
- }
- }
- //-
-
- private static void validateXSDSAX( File schemaFile, String file)
- throws Exception {
- FileInputStream inputStream = new FileInputStream(file);
- try {
- //+ Tasks Serialization-XML-OpenJDK_Parse-XMLSchema_SAX
- SchemaFactory factory = SchemaFactory.newInstance(
- XMLConstants.W3C_XML_SCHEMA_NS_URI);
-
- // This enables restrictions on the schema and document
- // complexity.
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-
- // This prevents resource resolution by the schema itself.
- // If the schema is trusted and references additional files,
- // this line must be omitted, otherwise loading these files
- // will fail.
- factory.setResourceResolver(new NoResourceResolver());
-
- Schema schema = factory.newSchema(schemaFile);
- Validator validator = schema.newValidator();
-
- // This prevents external resource resolution.
- validator.setResourceResolver(new NoResourceResolver());
-
- validator.validate(new SAXSource(new InputSource(inputStream)));
- //-
- } finally {
- inputStream.close();
- }
- }
-
- /**
- * Same as {@link #validateXSDSAX(File, String)}, but the schema type URI
- * is not hard-coded.
- */
- private static void validateSAX(String uri, File schemaFile, String file)
- throws Exception {
- FileInputStream inputStream = new FileInputStream(file);
- try {
- SchemaFactory factory = SchemaFactory.newInstance(uri);
-
- // This enables restrictions on the schema and document
- // complexity.
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-
- // This prevents resource resolution by the schema itself.
- // If the schema is trusted and references additional files,
- // this line must be omitted, otherwise loading these files
- // will fail.
- factory.setResourceResolver(new NoResourceResolver());
-
- Schema schema = factory.newSchema(schemaFile);
- Validator validator = schema.newValidator();
-
- // This prevents external resource resolution.
- validator.setResourceResolver(new NoResourceResolver());
-
- validator.validate(new SAXSource(new InputSource(inputStream)));
- } finally {
- inputStream.close();
- }
- }
-
- private static void validateXSDDOM(File schemaFile, String file) throws Exception {
- FileInputStream inputStream = new FileInputStream(file);
- try {
- Document document = parseDOM(file, false);
-
- //+ Tasks Serialization-XML-OpenJDK_Parse-XMLSchema_DOM
- SchemaFactory factory = SchemaFactory.newInstance(
- XMLConstants.W3C_XML_SCHEMA_NS_URI);
-
- // This enables restrictions on schema complexity.
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-
- // The following line prevents resource resolution
- // by the schema itself.
- factory.setResourceResolver(new NoResourceResolver());
-
- Schema schema = factory.newSchema(schemaFile);
-
- Validator validator = schema.newValidator();
-
- // This prevents external resource resolution.
- validator.setResourceResolver(new NoResourceResolver());
- validator.validate(new DOMSource(document));
- //-
- } finally {
- inputStream.close();
- }
- }
-
- /**
- * Same as {@link #validateXSDDOM(File, String)}, but does not hard-code
- * the schema type URI.
- */
- private static void validateDOM(String uri, File schemaFile, String file,
- boolean validate) throws Exception {
- FileInputStream inputStream = new FileInputStream(file);
- try {
- Document document = parseDOM(file, validate);
-
- SchemaFactory factory = SchemaFactory.newInstance(uri);
-
- // This enables restrictions on schema complexity.
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-
- // The following line prevents resource resolution
- // by the schema itself.
- factory.setResourceResolver(new NoResourceResolver());
-
- Schema schema = factory.newSchema(schemaFile);
-
- Validator validator = schema.newValidator();
- // This prevents external resource resolution.
- validator.setResourceResolver(new NoResourceResolver());
- validator.validate(new DOMSource(document));
- } finally {
- inputStream.close();
- }
- }
-
- static
- //+ Tasks Serialization-XML-OpenJDK-Errors
- class Errors implements ErrorHandler {
- @Override
- public void warning(SAXParseException exception) {
- exception.printStackTrace();
- }
-
- @Override
- public void fatalError(SAXParseException exception) {
- exception.printStackTrace();
- }
-
- @Override
- public void error(SAXParseException exception) {
- exception.printStackTrace();
- }
- }
- //-
-
- static
- //+ Tasks Serialization-XML-OpenJDK-NoEntityResolver
- class NoEntityResolver implements EntityResolver {
- @Override
- public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException, IOException {
- // Throwing an exception stops validation.
- throw new IOException(String.format(
- "attempt to resolve \"%s\" \"%s\"", publicId, systemId));
- }
- }
- //-
-
- private static void parseSAX(String file, boolean validate)
- throws Exception {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
- if (validate) {
- factory.setValidating(true);
- }
- SAXParser parser = factory.newSAXParser();
- FileInputStream in = new FileInputStream(file);
- try {
- XMLReader reader = parser.getXMLReader();
- reader.setEntityResolver(new NoEntityResolver());
- reader.setErrorHandler(new Errors());
- reader.parse(new InputSource(in));
- } finally {
- in.close();
- }
- }
-
- private static Document parseDOM(String file, boolean validate)
- throws Exception {
- FileInputStream inputStream = new FileInputStream(file);
- try {
- return parseDOMInternal(inputStream);
- } finally {
- inputStream.close();
- }
- }
-
- private static Document parseDOMInternal(FileInputStream inputStream)
- throws ParserConfigurationException, SAXException, IOException {
- //+ Tasks Serialization-XML-OpenJDK_Parse-DOM
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- // Impose restrictions on the complexity of the DTD.
- factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
-
- // Turn on validation.
- // This step can be omitted if validation is not desired.
- factory.setValidating(true);
-
- // Parse the document.
- DocumentBuilder builder = factory.newDocumentBuilder();
- builder.setEntityResolver(new NoEntityResolver());
- builder.setErrorHandler(new Errors());
- Document document = builder.parse(inputStream);
- //-
- return document;
- }
-}
diff --git a/defensive-coding/src/.svn/text-base/check-function.py.svn-base b/defensive-coding/src/.svn/text-base/check-function.py.svn-base
deleted file mode 100644
index ee647d6..0000000
--- a/defensive-coding/src/.svn/text-base/check-function.py.svn-base
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/python
-
-# Usage: python check-function.py DSO/FUNCTION-NAME/OUTPUT
-#
-# Prints OUTPUT if libDSO.so can be loaded and defines FUNCTION-NAME
-# as a function, or nothing otherwise.
-
-import ctypes
-import sys
-
-for (dsoname, funcname, output) in [arg.split("/", 3)
- for arg in sys.argv[1:]]:
- try:
- dso = ctypes.CDLL("lib{0}.so".format(dsoname))
- except OSError:
- continue
- if getattr(dso, funcname, None) is not None:
- print output
diff --git a/defensive-coding/src/.svn/text-base/src.mk.svn-base b/defensive-coding/src/.svn/text-base/src.mk.svn-base
deleted file mode 100644
index 7987680..0000000
--- a/defensive-coding/src/.svn/text-base/src.mk.svn-base
+++ /dev/null
@@ -1,53 +0,0 @@
-.PHONY: build-sources
-
-CC = gcc
-CWARNFLAGS = -Wall -W -Wno-unused-parameter -Werror=implicit-function-declaration
-CFLAGS = -std=gnu99 -O2 $(CWARNFLAGS) -g
-
-# List files which should only be compiled for syntax checking.
-compile_only += C-Pointers-remaining
-compile_only += C-Arithmetic-add
-compile_only += C-Arithmetic-mult
-
-# List Java files which sould be compiled
-compile_java += TLSClientOpenJDK
-
-# List fiels which will be compiled and linked, together with
-# additional dependencies.
-compile_and_link += C-String-Functions
-compile_and_link += TLS-Client-OpenSSL
-LIBS_TLS-Client-OpenSSL = -lssl -lcrypto
-compile_and_link += TLS-Client-GNUTLS
-LIBS_TLS-Client-GNUTLS = -lgnutls
-compile_and_link += TLS-Client-NSS
-CFLAGS_TLS-Client-NSS = -I/usr/include/nspr4 -I/usr/include/nss3
-LIBS_TLS-Client-NSS = -lnss3 -lnspr4 -lssl3
-compile_and_link += XML-Parser-Expat
-LIBS_XML-Parser-Expat = -lexpat
-
-# Define preprocessor symbols if certain functions exist.
-CHECK_FUNCTION = crypto/X509_check_host/-DHAVE_X509_CHECK_HOST \
- gnutls/gnutls_hash_fast/-DHAVE_GNUTLS_HASH_FAST
-DEFINES := $(shell python src/check-function.py $(CHECK_FUNCTION))
-
-CLASS_compile_java := $(patsubst %,src/%.class,$(compile_java))
-BIN_compile_and_link := $(patsubst %,src/%,$(compile_and_link))
-
-build-src: $(patsubst %,src/%.o,$(compile_only)) $(CLASS_compile_java) \
- $(BIN_compile_and_link)
-
-clean-src:
- -rm src/*.o src/*.class $(BIN_compile_and_link)
-
-src/%.o: src/%.c
- $(CC) $(CFLAGS) $(DEFINES) $(CFLAGS_$(basename $(notdir $@))) -c $< -o $@
-
-src/%.class: src/%.java
- javac -source 1.6 -target 1.6 -Xlint:all $^
-
-src/%: src/%.o
- $(CC) $^ -o $@ $(LIBS_$(notdir $@))
-
-src/TLS-Client-GNUTLS: src/tcp_connect.o
-src/TLS-Client-OpenSSL: src/tcp_connect.o src/x509_check_host.o
-src/TLS-Client-NSS: src/tcp_connect.o
diff --git a/defensive-coding/src/.svn/text-base/tcp_connect.c.svn-base b/defensive-coding/src/.svn/text-base/tcp_connect.c.svn-base
deleted file mode 100644
index fe72b31..0000000
--- a/defensive-coding/src/.svn/text-base/tcp_connect.c.svn-base
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "tcp_connect.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-int
-tcp_connect(const char *host, const char *service)
-{
- // A real-world implementation should connect to one IPv4 and one
- // IPv address in parallel, until a responsive server is found.
- const struct addrinfo hints = {
- .ai_family = AF_UNSPEC,
- .ai_socktype = SOCK_STREAM,
- };
- struct addrinfo *result;
- int ret = getaddrinfo(host, service, &hints, &result);
- if (ret != 0) {
- fprintf(stderr, "error: name lookup failure for %s/%s: %s\n",
- host, service, gai_strerror(ret));
- exit(1);
- }
- if (result == NULL) {
- fprintf(stderr, "error: no addresses found for %s/%s\n", host, service);
- freeaddrinfo(result);
- return -1;
- }
- for (const struct addrinfo *ai = result; ai; ai = ai->ai_next) {
- ret = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
- if (ret < 0) {
- continue;
- }
- if (connect(ret, ai->ai_addr, ai->ai_addrlen) == 0) {
- break;
- }
- int save = errno;
- close(ret);
- errno = save;
- ret = -1;
- }
- if (ret < 0) {
- return -1;
- }
- freeaddrinfo(result);
- return ret;
-}
diff --git a/defensive-coding/src/.svn/text-base/tcp_connect.h.svn-base b/defensive-coding/src/.svn/text-base/tcp_connect.h.svn-base
deleted file mode 100644
index 0234999..0000000
--- a/defensive-coding/src/.svn/text-base/tcp_connect.h.svn-base
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-
-/* Establishes a TCP connect to SERVICE at HOST and returns the socket
- descriptor. Calls exit on error (and prints an error message). */
-int tcp_connect(const char *host, const char *service);
-
diff --git a/defensive-coding/src/.svn/text-base/x509_check_host.c.svn-base b/defensive-coding/src/.svn/text-base/x509_check_host.c.svn-base
deleted file mode 100644
index 9797b56..0000000
--- a/defensive-coding/src/.svn/text-base/x509_check_host.c.svn-base
+++ /dev/null
@@ -1,355 +0,0 @@
-// This file is based on a (currently patched) file from OpenSSL,
-// namely crypto/x509v3/v3_utl.c. It is included here for testing
-// purposes only.
-
-/* v3_utl.c */
-/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
- * project.
- */
-/* ====================================================================
- * Copyright (c) 1999-2003 The OpenSSL Project. 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. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * licensing@OpenSSL.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- * nor may "OpenSSL" appear in their names without prior written
- * permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED 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 OpenSSL PROJECT OR
- * ITS 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.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
-#ifndef HAVE_X509_CHECK_HOST
-
-#include
-#include
-#include
-
-/* Always check subject name for host match even if subject alt names present */
-#define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 0x1
-/* Disable wild-card matching for dnsName fields and common name. */
-#define X509_CHECK_FLAG_NO_WILDCARDS 0x2
-
-typedef int (*equal_fn)(const unsigned char *pattern, size_t pattern_len,
- const unsigned char *subject, size_t subject_len);
-
-/* Compare while ASCII ignoring case. */
-static int equal_nocase(const unsigned char *pattern, size_t pattern_len,
- const unsigned char *subject, size_t subject_len)
- {
- if (pattern_len != subject_len)
- return 0;
- while (pattern_len)
- {
- unsigned char l = *pattern;
- unsigned char r = *subject;
- /* The pattern must not contain NUL characters. */
- if (l == 0)
- return 0;
- if (l != r)
- {
- if ('A' <= l && l <= 'Z')
- l = (l - 'A') + 'a';
- if ('A' <= r && r <= 'Z')
- r = (r - 'A') + 'a';
- if (l != r)
- return 0;
- }
- ++pattern;
- ++subject;
- --pattern_len;
- }
- return 1;
- }
-
-/* Compare using memcmp. */
-static int equal_case(const unsigned char *pattern, size_t pattern_len,
- const unsigned char *subject, size_t subject_len)
-{
- /* The pattern must not contain NUL characters. */
- if (memchr(pattern, '\0', pattern_len) != NULL)
- return 0;
- if (pattern_len != subject_len)
- return 0;
- return !memcmp(pattern, subject, pattern_len);
-}
-
-/* RFC 5280, section 7.5, requires that only the domain is compared in
- a case-insensitive manner. */
-static int equal_email(const unsigned char *a, size_t a_len,
- const unsigned char *b, size_t b_len)
- {
- if (a_len != b_len)
- return 0;
- size_t i = a_len;
- /* We search backwards for the '@' character, so that we do
- not have to deal with quoted local-parts. The domain part
- is compared in a case-insensitive manner. */
- while (i > 0)
- {
- --i;
- if (a[i] == '@' || b[i] == '@')
- {
- if (!equal_nocase(a + i, a_len - i,
- b + i, a_len - i))
- return 0;
- break;
- }
- }
- if (i == 0)
- i = a_len;
- return equal_case(a, i, b, i);
- }
-
-/* Compare the prefix and suffix with the subject, and check that the
- characters in-between are valid. */
-static int wildcard_match(const unsigned char *prefix, size_t prefix_len,
- const unsigned char *suffix, size_t suffix_len,
- const unsigned char *subject, size_t subject_len)
- {
- const unsigned char *wildcard_start;
- const unsigned char *wildcard_end;
- const unsigned char *p;
- if (subject_len < prefix_len + suffix_len)
- return 0;
- if (!equal_nocase(prefix, prefix_len, subject, prefix_len))
- return 0;
- wildcard_start = subject + prefix_len;
- wildcard_end = subject + (subject_len - suffix_len);
- if (!equal_nocase(wildcard_end, suffix_len, suffix, suffix_len))
- return 0;
- /* The wildcard must match at least one character. */
- if (wildcard_start == wildcard_end)
- return 0;
- /* Check that the part matched by the wildcard contains only
- permitted characters and only matches a single label. */
- for (p = wildcard_start; p != wildcard_end; ++p)
- if (!(('0' <= *p && *p <= '9') ||
- ('A' <= *p && *p <= 'Z') ||
- ('a' <= *p && *p <= 'z') ||
- *p == '-'))
- return 0;
- return 1;
- }
-
-/* Checks if the memory region consistens of [0-9A-Za-z.-]. */
-static int valid_domain_characters(const unsigned char *p, size_t len)
- {
- while (len)
- {
- if (!(('0' <= *p && *p <= '9') ||
- ('A' <= *p && *p <= 'Z') ||
- ('a' <= *p && *p <= 'z') ||
- *p == '-' || *p == '.'))
- return 0;
- ++p;
- --len;
- }
- return 1;
- }
-
-/* Find the '*' in a wildcard pattern. If no such character is found
- or the pattern is otherwise invalid, returns NULL. */
-static const unsigned char *wildcard_find_star(const unsigned char *pattern,
- size_t pattern_len)
- {
- const unsigned char *star = memchr(pattern, '*', pattern_len);
- size_t dot_count = 0;
- const unsigned char *suffix_start;
- size_t suffix_length;
- if (star == NULL)
- return NULL;
- suffix_start = star + 1;
- suffix_length = (pattern + pattern_len) - (star + 1);
- if (!(valid_domain_characters(pattern, star - pattern) &&
- valid_domain_characters(suffix_start, suffix_length)))
- return NULL;
- /* Check that the suffix matches at least two labels. */
- while (suffix_length)
- {
- if (*suffix_start == '.')
- ++dot_count;
- ++suffix_start;
- --suffix_length;
- }
- if (dot_count < 2)
- return NULL;
- return star;
- }
-
-/* Compare using wildcards. */
-static int equal_wildcard(const unsigned char *pattern, size_t pattern_len,
- const unsigned char *subject, size_t subject_len)
- {
- const unsigned char *star;
- /* Do not match IDNA names. */
- if (subject_len >=4 && memcmp(subject, "xn--", 4) == 0)
- star = NULL;
- else
- star = wildcard_find_star(pattern, pattern_len);
- if (star == NULL)
- return equal_nocase(pattern, pattern_len,
- subject, subject_len);
- return wildcard_match(pattern, star - pattern,
- star + 1, (pattern + pattern_len) - star - 1,
- subject, subject_len);
- }
-
-/* Compare an ASN1_STRING to a supplied string. If they match
- * return 1. If cmp_type > 0 only compare if string matches the
- * type, otherwise convert it to UTF8.
- */
-
-static int do_check_string(ASN1_STRING *a, int cmp_type, equal_fn equal,
- const unsigned char *b, size_t blen)
- {
- if (!a->data || !a->length)
- return 0;
- if (cmp_type > 0)
- {
- if (cmp_type != a->type)
- return 0;
- if (cmp_type == V_ASN1_IA5STRING)
- return equal(a->data, a->length, b, blen);
- if (a->length == (int)blen && !memcmp(a->data, b, blen))
- return 1;
- else
- return 0;
- }
- else
- {
- int astrlen, rv;
- unsigned char *astr;
- astrlen = ASN1_STRING_to_UTF8(&astr, a);
- if (astrlen < 0)
- return 0;
- rv = equal(astr, astrlen, b, blen);
- OPENSSL_free(astr);
- return rv;
- }
- }
-
-static int do_x509_check(X509 *x, const unsigned char *chk, size_t chklen,
- unsigned int flags, int check_type)
- {
- GENERAL_NAMES *gens = NULL;
- X509_NAME *name = NULL;
- int i;
- int cnid;
- int alt_type;
- equal_fn equal;
- if (check_type == GEN_EMAIL)
- {
- cnid = NID_pkcs9_emailAddress;
- alt_type = V_ASN1_IA5STRING;
- equal = equal_email;
- }
- else if (check_type == GEN_DNS)
- {
- cnid = NID_commonName;
- alt_type = V_ASN1_IA5STRING;
- if (flags & X509_CHECK_FLAG_NO_WILDCARDS)
- equal = equal_nocase;
- else
- equal = equal_wildcard;
- }
- else
- {
- cnid = 0;
- alt_type = V_ASN1_OCTET_STRING;
- equal = equal_case;
- }
-
- if (chklen == 0)
- chklen = strlen((const char *)chk);
-
- gens = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL);
- if (gens)
- {
- int rv = 0;
- for (i = 0; i < sk_GENERAL_NAME_num(gens); i++)
- {
- GENERAL_NAME *gen;
- ASN1_STRING *cstr;
- gen = sk_GENERAL_NAME_value(gens, i);
- if(gen->type != check_type)
- continue;
- if (check_type == GEN_EMAIL)
- cstr = gen->d.rfc822Name;
- else if (check_type == GEN_DNS)
- cstr = gen->d.dNSName;
- else
- cstr = gen->d.iPAddress;
- if (do_check_string(cstr, alt_type, equal, chk, chklen))
- {
- rv = 1;
- break;
- }
- }
- GENERAL_NAMES_free(gens);
- if (rv)
- return 1;
- if (!(flags & X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT) || !cnid)
- return 0;
- }
- i = -1;
- name = X509_get_subject_name(x);
- while((i = X509_NAME_get_index_by_NID(name, cnid, i)) >= 0)
- {
- X509_NAME_ENTRY *ne;
- ASN1_STRING *str;
- ne = X509_NAME_get_entry(name, i);
- str = X509_NAME_ENTRY_get_data(ne);
- if (do_check_string(str, -1, equal, chk, chklen))
- return 1;
- }
- return 0;
- }
-
-int X509_check_host(X509 *x, const unsigned char *chk, size_t chklen,
- unsigned int flags)
- {
- return do_x509_check(x, chk, chklen, flags, GEN_DNS);
- }
-#endif
diff --git a/defensive-coding/src/data/.svn/all-wcprops b/defensive-coding/src/data/.svn/all-wcprops
deleted file mode 100644
index ae22847..0000000
--- a/defensive-coding/src/data/.svn/all-wcprops
+++ /dev/null
@@ -1,197 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 68
-/repos/product-security/!svn/ver/290/defensive-coding/trunk/src/data
-END
-XML-Parser-DTD_Public_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 98
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-DTD_Public_URL.xml
-END
-XML-Parser-Internal_Entity_Polynomial_Attribute.xml
-K 25
-svn:wc:ra_dav:version-url
-V 120
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Entity_Polynomial_Attribute.xml
-END
-XML-Parser-Notation_System.xml
-K 25
-svn:wc:ra_dav:version-url
-V 99
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Notation_System.xml
-END
-XML-Parser-Internal_Entity_Exponential_Attribute.xml
-K 25
-svn:wc:ra_dav:version-url
-V 121
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Entity_Exponential_Attribute.xml
-END
-XML-Parser-External_Entity_System_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 110
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-External_Entity_System_URL.xml
-END
-XML-Parser-Internal_Regexp_1.xml
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Regexp_1.xml
-END
-XML-Parser-Internal_Regexp_2.xml
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Regexp_2.xml
-END
-XML-Parser-Internal_Regexp_3.xml
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Regexp_3.xml
-END
-XML-Parser-DTD_Public.xml
-K 25
-svn:wc:ra_dav:version-url
-V 94
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-DTD_Public.xml
-END
-XML-Parser-Notation_Public_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 103
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Notation_Public_URL.xml
-END
-XML-Parser-Internal_Entity_Polynomial.xml
-K 25
-svn:wc:ra_dav:version-url
-V 110
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Entity_Polynomial.xml
-END
-XML-Parser-XSD-Include_File.xml
-K 25
-svn:wc:ra_dav:version-url
-V 100
-/repos/product-security/!svn/ver/284/defensive-coding/trunk/src/data/XML-Parser-XSD-Include_File.xml
-END
-XML-Parser-External_Regexp_3.xml
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-External_Regexp_3.xml
-END
-XML-Parser-Internal_Entity_Exponential.xml
-K 25
-svn:wc:ra_dav:version-url
-V 111
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Internal_Entity_Exponential.xml
-END
-XML-Parser-External_Entity_System.xml
-K 25
-svn:wc:ra_dav:version-url
-V 106
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-External_Entity_System.xml
-END
-XML-Parser-XInclude-File.xml
-K 25
-svn:wc:ra_dav:version-url
-V 97
-/repos/product-security/!svn/ver/290/defensive-coding/trunk/src/data/XML-Parser-XInclude-File.xml
-END
-XML-Parser-External_Regexp_3.dtd
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/279/defensive-coding/trunk/src/data/XML-Parser-External_Regexp_3.dtd
-END
-XML-Parser-Notation_Public.xml
-K 25
-svn:wc:ra_dav:version-url
-V 99
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Notation_Public.xml
-END
-XML-Parser-External_Entity_Public_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 110
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-External_Entity_Public_URL.xml
-END
-XML-Parser-XSD-URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 91
-/repos/product-security/!svn/ver/284/defensive-coding/trunk/src/data/XML-Parser-XSD-URL.xml
-END
-XML-Parser-Validate-Regexp_1.xsd
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/283/defensive-coding/trunk/src/data/XML-Parser-Validate-Regexp_1.xsd
-END
-XML-Parser-DTD_System_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 98
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-DTD_System_URL.xml
-END
-XML-Parser-Validate-Regexp_1.xml
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/282/defensive-coding/trunk/src/data/XML-Parser-Validate-Regexp_1.xml
-END
-XML-Parser-XSD-Include_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 99
-/repos/product-security/!svn/ver/284/defensive-coding/trunk/src/data/XML-Parser-XSD-Include_URL.xml
-END
-XML-Parser-Validate-Regexp_4.xsd
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/283/defensive-coding/trunk/src/data/XML-Parser-Validate-Regexp_4.xsd
-END
-XML-Parser-XInclude-URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 96
-/repos/product-security/!svn/ver/290/defensive-coding/trunk/src/data/XML-Parser-XInclude-URL.xml
-END
-XML-Parser-XSD-File.xml
-K 25
-svn:wc:ra_dav:version-url
-V 92
-/repos/product-security/!svn/ver/284/defensive-coding/trunk/src/data/XML-Parser-XSD-File.xml
-END
-XML-Parser-External_Entity_Public.xml
-K 25
-svn:wc:ra_dav:version-url
-V 106
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-External_Entity_Public.xml
-END
-XML-Parser-Validate-Regexp_1.dtd
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/282/defensive-coding/trunk/src/data/XML-Parser-Validate-Regexp_1.dtd
-END
-XML-Parser-DTD_System.xml
-K 25
-svn:wc:ra_dav:version-url
-V 94
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-DTD_System.xml
-END
-XML-Parser-Notation_System_URL.xml
-K 25
-svn:wc:ra_dav:version-url
-V 103
-/repos/product-security/!svn/ver/281/defensive-coding/trunk/src/data/XML-Parser-Notation_System_URL.xml
-END
-XML-Parser-Validate-Regexp_1.rng
-K 25
-svn:wc:ra_dav:version-url
-V 101
-/repos/product-security/!svn/ver/283/defensive-coding/trunk/src/data/XML-Parser-Validate-Regexp_1.rng
-END
diff --git a/defensive-coding/src/data/.svn/entries b/defensive-coding/src/data/.svn/entries
deleted file mode 100644
index a6441d2..0000000
--- a/defensive-coding/src/data/.svn/entries
+++ /dev/null
@@ -1,1116 +0,0 @@
-10
-
-dir
-305
-https://svn.devel.redhat.com/repos/product-security/defensive-coding/trunk/src/data
-https://svn.devel.redhat.com/repos/product-security
-
-
-
-2012-12-14T09:56:46.394074Z
-290
-fweimer@REDHAT.COM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-9bd5cf0f-f2b3-0410-b1a9-d5c590f50bf1
-
-XML-Parser-DTD_Public_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.229827Z
-869b431ed9e7f200340094d1d79e38f2
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-142
-
-XML-Parser-Internal_Entity_Polynomial_Attribute.xml
-file
-
-
-
-
-2013-01-10T17:17:51.230827Z
-1a3b26c00352413667f38df1e0533238
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-687
-
-XML-Parser-Notation_System.xml
-file
-
-
-
-
-2013-01-10T17:17:51.230827Z
-889faad5991dae5ecea3ee591a867053
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-226
-
-XML-Parser-Internal_Entity_Exponential_Attribute.xml
-file
-
-
-
-
-2013-01-10T17:17:51.231827Z
-f5a857fa435e11d8e88cc63bfc8bba2b
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-991
-
-XML-Parser-External_Entity_System_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.231827Z
-ae97ab4d247363e5d94ab2b13af3c99f
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-202
-
-XML-Parser-Internal_Regexp_1.xml
-file
-
-
-
-
-2013-01-10T17:17:51.232827Z
-dd38cd30bd5af1a813ef115c8a326525
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1968
-
-XML-Parser-Internal_Regexp_2.xml
-file
-
-
-
-
-2013-01-10T17:17:51.232827Z
-b83ec2586401b78a9ef21e488d97ee47
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1040
-
-XML-Parser-Internal_Regexp_3.xml
-file
-
-
-
-
-2013-01-10T17:17:51.233827Z
-e4749f47ced3a7bdd949b10382c337f0
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-928
-
-XML-Parser-DTD_Public.xml
-file
-
-
-
-
-2013-01-10T17:17:51.233827Z
-35da8117213594909cd8d375cb787e2e
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-139
-
-XML-Parser-Notation_Public_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.234827Z
-82b5df6efa8704b0bb6a35c491329f0e
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-242
-
-XML-Parser-Internal_Entity_Polynomial.xml
-file
-
-
-
-
-2013-01-10T17:17:51.235827Z
-985019512466a10d9ee9bc76bc2ecd26
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-658
-
-XML-Parser-XSD-Include_File.xml
-file
-
-
-
-
-2013-01-10T17:17:51.235827Z
-e6d2f280e2d079b5f7286d00e1b29e0d
-2012-12-13T16:18:36.596123Z
-284
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-562
-
-XML-Parser-External_Regexp_3.xml
-file
-
-
-
-
-2013-01-10T17:17:51.236827Z
-55df86c4cb70b6324f31061a40f9b1f9
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-214
-
-XML-Parser-Internal_Entity_Exponential.xml
-file
-
-
-
-
-2013-01-10T17:17:51.236827Z
-5af629a3428064cd3ae7c251607b8b75
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-963
-
-XML-Parser-External_Entity_System.xml
-file
-
-
-
-
-2013-01-10T17:17:51.236827Z
-da6e3b3d71fbe30b6fc9f0bd937f5564
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-191
-
-XML-Parser-XInclude-File.xml
-file
-
-
-
-
-2013-01-10T17:17:51.237827Z
-074294be6fbc0885ab50385d5369350c
-2012-12-14T09:56:46.394074Z
-290
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-124
-
-XML-Parser-External_Regexp_3.dtd
-file
-
-
-
-
-2013-01-10T17:17:51.237827Z
-6e9f960ae6fae80f2f1af9d15bee4e7d
-2012-12-11T17:20:43.846695Z
-279
-fweimer@REDHAT.COM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-741
-
-XML-Parser-Notation_Public.xml
-file
-
-
-
-
-2013-01-10T17:17:51.237827Z
-c2d44d02ed8817af336fd79b3807d7dc
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-234
-
-XML-Parser-External_Entity_Public_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.237827Z
-347a775c3109f69ec8fa7f6d62f821d2
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-205
-
-XML-Parser-XSD-URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.237827Z
-5ecbfe43ff2987ae98fccf42d344c346
-2012-12-13T16:18:36.596123Z
-284
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-209
-
-XML-Parser-Validate-Regexp_1.xsd
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-4520a3678005156cd43141d5263e60e5
-2012-12-13T14:47:55.060580Z
-283
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-29478
-
-XML-Parser-DTD_System_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-7c427b73646ce262d458240da1b9a186
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-132
-
-XML-Parser-Validate-Regexp_1.xml
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-019cd575cac5678e40f20d7baa4047d1
-2012-12-13T14:46:38.504321Z
-282
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-232
-
-XML-Parser-XSD-Include_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-1ef30f90e596d729a28c7828883ea82b
-2012-12-13T16:18:36.596123Z
-284
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-577
-
-XML-Parser-Validate-Regexp_4.xsd
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-e786c676475116dd14cc5196761a1f1b
-2012-12-13T14:47:55.060580Z
-283
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1074
-
-XML-Parser-XInclude-URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-9c27dd5bc74aef33c090b6e8fc8b9529
-2012-12-14T09:56:46.394074Z
-290
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-143
-
-XML-Parser-XSD-File.xml
-file
-
-
-
-
-2013-01-10T17:17:51.238827Z
-2a9ca74fe9cabead7f49d4d542d98def
-2012-12-13T16:18:36.596123Z
-284
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-194
-
-XML-Parser-External_Entity_Public.xml
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-fb902fb338961c2664409f8515850fcb
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-199
-
-XML-Parser-Validate-Regexp_1.dtd
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-ced5e4ccad136727cefc561fb51facb8
-2012-12-13T14:46:38.504321Z
-282
-fweimer@REDHAT.COM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1594
-
-XML-Parser-DTD_System.xml
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-7bd4d6b9ce1a7dd1bc519c69e0b06e22
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-129
-
-XML-Parser-Notation_System_URL.xml
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-798501c7c170ba483afc44a52be06c0d
-2012-12-13T13:25:23.103424Z
-281
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-234
-
-XML-Parser-Validate-Regexp_1.rng
-file
-
-
-
-
-2013-01-10T17:17:51.239827Z
-249193cd5d0356d8c0a6a578b05da265
-2012-12-13T14:47:55.060580Z
-283
-fweimer@REDHAT.COM
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-23524
-
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-DTD_System_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Entity_System_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Regexp_3.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Regexp_3.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-External_Regexp_3.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_1.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_1.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_1.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_2.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_2.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_2.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_3.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_3.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Internal_Regexp_3.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Notation_System_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.rng.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.rng.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.rng.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xsd.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xsd.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_1.xsd.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_4.xsd.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_4.xsd.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-Validate-Regexp_4.xsd.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-File.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-File.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-File.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XInclude-URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-File.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-File.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-File.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_File.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_File.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_File.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-Include_URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-URL.xml.svn-base b/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-URL.xml.svn-base
deleted file mode 100644
index bfec7d5..0000000
--- a/defensive-coding/src/data/.svn/prop-base/XML-Parser-XSD-URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 8
-text/xml
-END
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public.xml.svn-base
deleted file mode 100644
index 1904358..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public_URL.xml.svn-base
deleted file mode 100644
index 593d191..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System.xml.svn-base
deleted file mode 100644
index 5d809c9..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System_URL.xml.svn-base
deleted file mode 100644
index c6db833..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-DTD_System_URL.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public.xml.svn-base
deleted file mode 100644
index b976d59..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public.xml.svn-base
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-]>
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public_URL.xml.svn-base
deleted file mode 100644
index d9a7552..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-]>
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System.xml.svn-base
deleted file mode 100644
index bb33a91..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System.xml.svn-base
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-]>
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System_URL.xml.svn-base
deleted file mode 100644
index cc0fbe0..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Entity_System_URL.xml.svn-base
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-]>
-&e1;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.dtd.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.dtd.svn-base
deleted file mode 100644
index bc6d7af..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.dtd.svn-base
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.xml.svn-base
deleted file mode 100644
index 5616c7a..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-External_Regexp_3.xml.svn-base
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base
deleted file mode 100644
index b5a67ff..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential.xml.svn-base
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-]>
-&e30;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base
deleted file mode 100644
index 7b02965..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Exponential_Attribute.xml.svn-base
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-]>
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base
deleted file mode 100644
index cc181a3..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial.xml.svn-base
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-]>
-&e6;
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base
deleted file mode 100644
index f73b9d4..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Entity_Polynomial_Attribute.xml.svn-base
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-]>
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_1.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_1.xml.svn-base
deleted file mode 100644
index 89d00d8..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_1.xml.svn-base
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-]>
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_2.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_2.xml.svn-base
deleted file mode 100644
index a5c11e8..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_2.xml.svn-base
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-]>
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_3.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_3.xml.svn-base
deleted file mode 100644
index 24c48a2..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Internal_Regexp_3.xml.svn-base
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-]>
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public.xml.svn-base
deleted file mode 100644
index aade0f9..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public.xml.svn-base
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-]>
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public_URL.xml.svn-base
deleted file mode 100644
index 4fe750f..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_Public_URL.xml.svn-base
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-]>
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System.xml.svn-base
deleted file mode 100644
index 8ba042b..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System.xml.svn-base
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-]>
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System_URL.xml.svn-base
deleted file mode 100644
index 78b5138..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Notation_System_URL.xml.svn-base
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-]>
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.dtd.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.dtd.svn-base
deleted file mode 100644
index 4bc85b4..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.dtd.svn-base
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.rng.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.rng.svn-base
deleted file mode 100644
index 191f835..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.rng.svn-base
+++ /dev/null
@@ -1,1010 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xml.svn-base
deleted file mode 100644
index e3c57a7..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xsd.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xsd.svn-base
deleted file mode 100644
index e5a9f13..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_1.xsd.svn-base
+++ /dev/null
@@ -1,990 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_4.xsd.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_4.xsd.svn-base
deleted file mode 100644
index 7c2eba4..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-Validate-Regexp_4.xsd.svn-base
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-File.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-File.xml.svn-base
deleted file mode 100644
index e6fc009..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-File.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-URL.xml.svn-base
deleted file mode 100644
index 3afe285..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XInclude-URL.xml.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-File.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-File.xml.svn-base
deleted file mode 100644
index f12aba4..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-File.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_File.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_File.xml.svn-base
deleted file mode 100644
index 0443d70..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_File.xml.svn-base
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_URL.xml.svn-base
deleted file mode 100644
index 282fb87..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-Include_URL.xml.svn-base
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-URL.xml.svn-base b/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-URL.xml.svn-base
deleted file mode 100644
index 45df87f..0000000
--- a/defensive-coding/src/data/.svn/text-base/XML-Parser-XSD-URL.xml.svn-base
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-