diff options
author | Lev Walkin <vlm@lionet.info> | 2012-09-04 01:37:14 -0700 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2012-09-04 01:37:14 -0700 |
commit | 69b4f1239dd6e55b571bc099faf103d95406be8d (patch) | |
tree | 9edd29f6b22d24217272914639d7579caa08e5df /asn1c | |
parent | 5df59a52f75dde4fe99047c064fcde54bd359138 (diff) |
remove inconsequential webcgi subproject
Diffstat (limited to 'asn1c')
-rw-r--r-- | asn1c/Makefile.am | 2 | ||||
-rw-r--r-- | asn1c/Makefile.in | 2 | ||||
-rw-r--r-- | asn1c/webcgi/Makefile.am | 4 | ||||
-rw-r--r-- | asn1c/webcgi/Makefile.in | 474 | ||||
-rw-r--r-- | asn1c/webcgi/README | 22 | ||||
-rw-r--r-- | asn1c/webcgi/asn1c-suid-helper.c | 111 | ||||
-rwxr-xr-x | asn1c/webcgi/asn1c.cgi | 1175 |
7 files changed, 2 insertions, 1788 deletions
diff --git a/asn1c/Makefile.am b/asn1c/Makefile.am index a4b10917..1c31f9c3 100644 --- a/asn1c/Makefile.am +++ b/asn1c/Makefile.am @@ -1,5 +1,5 @@ -SUBDIRS = . webcgi tests +SUBDIRS = . tests AM_CFLAGS = @ADD_CFLAGS@ AM_CPPFLAGS = \ diff --git a/asn1c/Makefile.in b/asn1c/Makefile.in index e0f607c6..17aeced6 100644 --- a/asn1c/Makefile.in +++ b/asn1c/Makefile.in @@ -263,7 +263,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = . webcgi tests +SUBDIRS = . tests AM_CFLAGS = @ADD_CFLAGS@ AM_CPPFLAGS = \ -I${top_srcdir}/libasn1compiler \ diff --git a/asn1c/webcgi/Makefile.am b/asn1c/webcgi/Makefile.am deleted file mode 100644 index a0e7fe15..00000000 --- a/asn1c/webcgi/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ - -dist_noinst_SCRIPTS = asn1c.cgi -noinst_PROGRAMS = asn1c-suid-helper - diff --git a/asn1c/webcgi/Makefile.in b/asn1c/webcgi/Makefile.in deleted file mode 100644 index 2fc21744..00000000 --- a/asn1c/webcgi/Makefile.in +++ /dev/null @@ -1,474 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = asn1c-suid-helper$(EXEEXT) -subdir = asn1c/webcgi -DIST_COMMON = README $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -asn1c_suid_helper_SOURCES = asn1c-suid-helper.c -asn1c_suid_helper_OBJECTS = asn1c-suid-helper.$(OBJEXT) -asn1c_suid_helper_LDADD = $(LDADD) -SCRIPTS = $(dist_noinst_SCRIPTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = asn1c-suid-helper.c -DIST_SOURCES = asn1c-suid-helper.c -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ADD_CFLAGS = @ADD_CFLAGS@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -dist_noinst_SCRIPTS = asn1c.cgi -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign asn1c/webcgi/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign asn1c/webcgi/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -asn1c-suid-helper$(EXEEXT): $(asn1c_suid_helper_OBJECTS) $(asn1c_suid_helper_DEPENDENCIES) - @rm -f asn1c-suid-helper$(EXEEXT) - $(LINK) $(asn1c_suid_helper_OBJECTS) $(asn1c_suid_helper_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1c-suid-helper.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(SCRIPTS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/asn1c/webcgi/README b/asn1c/webcgi/README deleted file mode 100644 index 9bee03fb..00000000 --- a/asn1c/webcgi/README +++ /dev/null @@ -1,22 +0,0 @@ - -This is the source of the CGI-based Web wrapper around asn1c compiler. - -To install, execute the following steps in this directory - - CGIDIR=/path/where/webserver/CGIs/are/stored - make # Ensure the binary files are built - cp asn1c.cgi asn1c-suid-helper $CGIDIR - chgrp www $CGIDIR/asn1c-suid-helper # Or whatever Web server has - chown root $CGIDIR/asn1c-suid-helper - chmod 4550 $CGIDIR/asn1c-suid-helper # Make it setuid - # edit the $CGIDIR/asn1c.cgi to set up a few preferences - # in the beginning of that Perl script. - -The chmod command makes the asn1c-suid-helper program setuid. -The asn1c-suid-helper is a tiny wrapper (look in the asn1c-suid-helper.c), -which has the single purpose of running the asn1c compiler under extremely -strict environment. -The root uid and 4555 mode actually _raise_ security of the whole ASN.1 CGI -system, so don't worry. -If you're still uncertain, just go read the source code, it's only a page long. - diff --git a/asn1c/webcgi/asn1c-suid-helper.c b/asn1c/webcgi/asn1c-suid-helper.c deleted file mode 100644 index d987c7a2..00000000 --- a/asn1c/webcgi/asn1c-suid-helper.c +++ /dev/null @@ -1,111 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <sys/types.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <sysexits.h> - -#ifdef _WIN32 -#define setuid(s) -#define getuid() -#define setgid(s) -#define getgid() -#define chroot(p) (-1) -#endif - -/* - * This program chroots into a given directory, - * then executes the asn1c command with strict arguments checking. - */ -int -main(int ac, char **av) { - char cmdPath[32]; - char *envp[] = { NULL }; /* Empty environment */ - int ret; - int i; - - if(ac < 4) { - setgid(getgid()); - setuid(getuid()); - fprintf(stderr, - "Usage: %s <chroot-to> <chdir-to> <command> [options]\n", - av[0]); - exit(EX_USAGE); - } - - ret = chroot(av[1]); - - /* Drop the privileges */ - setgid(getgid()); - setuid(getuid()); - - if(ret != 0) { - fprintf(stderr, "chroot(\"%s\") failed: %s\n", - av[1], strerror(errno)); - exit(EX_OSERR); - } - - if(chdir(av[2]) != 0) { - fprintf(stderr, "chdir(\"%s\") failed: %s\n", - av[2], strerror(errno)); - exit(EX_OSERR); - } - - if(ac > 64) { - fprintf(stderr, "Insecure number of arguments: %d\n", ac); - exit(EX_DATAERR); - } - - - /* - * Add an argument if this is an asn1c compiler. - */ - if(strcmp(av[3], "asn1c") == 0) { - ac -= 2; - av += 2; - av[0] = "asn1c"; - av[1] = "-S/skeletons"; - i = 2; - strcpy(cmdPath, "/bin/asn1c"); - } else { - ac -= 3; - av += 3; - i = 0; - } - - if(strlen(av[0]) > sizeof(cmdPath)/2) { - fprintf(stderr, "Insecure command name: %s\n", av[0]); - exit(EX_DATAERR); - } - memcpy(cmdPath, "/bin/", 5); - strcpy(cmdPath + 5, av[0]); - - /* - * Check arguments for the permitted alphabet constraints. - */ - for(; i < ac; i++) { - char *p; - for(p = av[i];; p++) { - switch(*p) { - case '0' ... '9': case 'A' ... 'Z': case 'a' ... 'z': - case '.': case '_': case '-': case '=': - continue; - case '\0': - default: - break; - } - break; - } - if(*p || (p - av[i]) > 250) { - fprintf(stderr, "Insecure argument %d\n", i); - exit(EX_DATAERR); - } - } - - execve(cmdPath, av, envp); - perror(cmdPath); - - exit(EX_UNAVAILABLE); -} - diff --git a/asn1c/webcgi/asn1c.cgi b/asn1c/webcgi/asn1c.cgi deleted file mode 100755 index 257684aa..00000000 --- a/asn1c/webcgi/asn1c.cgi +++ /dev/null @@ -1,1175 +0,0 @@ -#!/usr/bin/perl -w -# -# $Id$ -# - -############################################################################ -# The following preferences may be modified to match the local environment # -############################################################################ - -# Directory with the users data. -$TMPDIR = '/tmp/asn1c-cgi-jail/'; -$SUIDHelper = './asn1c-suid-helper'; -$SkeletonsDir = '/usr/local/share/asn1c'; # Will be needed only once -$CompilerLocation = '/usr/local/bin/asn1c'; # asn1c binary location -$GNUTar = '/usr/local/bin/gtar'; # GNU tar utility -$HelpDBFile = $TMPDIR . '/var/db/Help-DB'; # Help requests database -$HashProgramPath = 'md5'; # Program to hash the input -$DM = 0750; # Directory mode for all mkdirs -$MaxHistoryItems = 5; # Number of items in History -$DynamicHistory = 'yes'; # Full/Short history -$safeFilenameRE = '[a-zA-Z0-9_]+[.a-zA-Z0-9_-]{0,200}'; # Safe filename regex -$safeTimeRE = '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}'; -$ASN1C_Page = 'http://lionet.info/asn1c'; -$HelpEmail = 'asn1c@lionet.info'; -$defaultUserEmail = 'your@email-for-reply'; -$DataERR = 65; # EX_DATAERR from <sysexits.h> - -$warn = '<CENTER><FONT SIZE=+1><B>'; -$unwarn = '</B></FONT></CENTER>'; - -$OpEnvFailed = 'Failed to create the operations\' environment:'; -$RandFailed = 'No source of randomness'; -$SandBoxInitFailed = 'User playground initialization failed'; - -$myName = $ENV{SCRIPT_NAME}; # URL of this particular script (without args) - -$homePath = "<FONT FACE=Courier SIZE=-1>" - . "<A HREF=http://lionet.info>Home</A>" - . " → <A HREF=$ASN1C_Page>ASN.1</A>" - . " → Online ASN.1 Compiler" - . "</FONT><P>"; - -################################################### -# The code below rarely requires any modification # -################################################### - -use CGI qw/param cookie header upload escapeHTML/; - -$|=1; # Enable AutoFlush (for older versions of Perl) - -my %binaryDecoders = ( - x509 => { order => 1, - shorder => 6, - type => 'X.509 Certificate', - typeExt => 'X.509 Certificate', - description => 'X.509 in DER (not PEM!)', - exe => 'x509dump', - msg => '' - }, - - tap0311 => { order => 2, - shorder => 4, - type => TAP3, - typeExt => 'GSM TAP3-11 data', - description => 'GSM TAP3-11 binary file', - exe => 'tap3dump-11', - msg => '' - }, - - tap0310 => { order => 3, - shorder => 3, - type => TAP3, - typeExt => 'GSM TAP3-10 data', - description => 'GSM TAP3-10 binary file', - exe => 'tap3dump-10', - msg => '' - }, - - tap0309 => { order => 4, - shorder => 2, - type => TAP3, - typeExt => 'GSM TAP3-09 data', - description => 'GSM TAP3-09 binary file', - exe => 'tap3dump-09', - msg => '' - }, - - ldap3 => { order => 5, - shorder => 5, - type => 'LDAPv3', - typeExt => 'IETF LDAPv3 message', - description => 'IETF LDAPv3 message', - exe => 'ldap3dump', - msg => '' - }, - - megaco => { order => 6, - shorder => 6, - type => 'MEGACO', - typeExt => 'MEGACO (H.248.1) data', - description => 'MEGACO (H.248.1) message', - exe => 'megacoDump', - msg => '' - }, - - mheg5 => { order => 7, - shorder => 7, - type => 'MHEG-5', - typeExt => 'ISO MHEG-5 data', - description => 'ISO MHEG-5 stream file', - exe => 'mheg5dump', - msg => '' - }, - - ber => { order => 8, - shorder => 1, - type => BER, - typeExt => 'BER encoded data', - description => 'BER/DER/CER binary file', - exe => 'unber', - cmdopts => '', - msg => "<!-- Use 'enber' to convert it back into BER -->\n" - }, - - rrcDLCCCH => { order => -1, # Not automatic - shorder => 9, - type => 'RRC DL-CCCH-Message', - typeExt => 'RRC DL-CCCH-Message frame', - description => '3GPP RRC DL-CCCH-Message', - exe => 'rrc-dump', - cmdopts => '-p DL-CCCH-Message', - msg => '' - }, - - rrcULCCCH => { order => -1, - shorder => 10, - type => 'RRC UL-CCCH-Message', - typeExt => 'RRC UL-CCCH-Message frame', - description => '3GPP RRC UL-CCCH-Message', - exe => 'rrc-dump', - cmdopts => '-p UL-CCCH-Message', - msg => '' - }, - - rrcDLDCCH => { order => -1, - shorder => 11, - type => 'RRC DL-DCCH-Message', - typeExt => 'RRC DL-DCCH-Message frame', - description => '3GPP RRC DL-DCCH-Message', - exe => 'rrc-dump', - cmdopts => '-p DL-DCCH-Message', - msg => '' - }, - - rrcULDCCH => { order => -1, - shorder => 12, - type => 'RRC UL-DCCH-Message', - typeExt => 'RRC UL-DCCH-Message frame', - description => '3GPP RRC UL-DCCH-Message', - exe => 'rrc-dump', - cmdopts => '-p UL-DCCH-Message', - msg => '' - }, - - rrcPCCH => { order => -1, - shorder => 13, - type => 'RRC PCCH-Message', - typeExt => 'RRC PCCH-Message frame', - description => '3GPP RRC PCCH-Message', - exe => 'rrc-dump', - cmdopts => '-p PCCH-Message', - msg => '' - } - -); - -my $redirect = ''; # No redirection by default -my $redirect_bottom = ''; # No redirection text by default -my $content = ''; # Default content is empty - -sub iparam($) { - my $name = shift; - if(defined wantarray and wantarray) { - return param($name); - } else { - my $value = param($name); - $value = '' unless defined $value; - return $value; - } -} - -sub optGet($) { - my $name = shift; - my $on = iparam($name); - return ($on eq "on"); -} - -sub IssueRedirect() { - $redirect = "<META HTTP-EQUIV=\"Refresh\" " - . "CONTENT=\"5; URL=$myName\">"; - $redirect_bottom = "<P><CENTER>This page will <A HREF=$myName>disappear</A> in 5 seconds.</CENTER>" -} - -# If something goes wrong, this function is invoked to display the error message -sub bark($@) { - local $_ = join("<BR>\n", @_); - $content = $warn . $_ . $unwarn; - goto PRINTOUT; -} - -# Make the directory name containing session files for the given Session ID -sub makeSessionDirName($$) { - my $pfx = shift; # Prefix is the name of the top-level directory - my $sid = shift; # Session identifier (md5) - $pfx . '/sessions/' . $sid . '/'; -} - -# Create ISO 8601 time string: "YYYY-MM-DDThh:mm:ss" -my $cachedTime; -sub isoTime() { - return $cachedTime if $cachedTime; - my @tm = localtime(time); - - $tm[5] += 1900; - $tm[4] += 1; - - # Insert leading zeros - for(my $i = 0; $i < 5; $i++) { - $tm[$i] =~ s/^(.)$/0$1/; - } - - $cachedTime = "$tm[5]-$tm[4]-$tm[3]T$tm[2]:$tm[1]:$tm[0]"; -} - -sub humanFriendlySize($) { - my $size = shift; - if($size > (1024 * 1024)) { - $size >>= 20; - $size .= " Mb"; - } elsif($size > 1024) { - $size >>= 10; - $size .= " Kb"; - } elsif($size > 0) { - $size .= " bytes"; - } - return $size; -} - -# Create the necessary environment for chrooting into. -sub prepareChrootEnvironment() { - return 1 if(-d $TMPDIR); # Envuronment already exists - mkdir $TMPDIR, $DM, or bark($OpEnvFailed, $!); # Global directory - mkdir $TMPDIR . 'sessions', $DM or bark($OpEnvFailed, $!); # sessions - mkdir $TMPDIR . 'bin', $DM or bark($OpEnvFailed, $!); # asn1c location - mkdir $TMPDIR . 'skeletons', $DM or bark($OpEnvFailed, $!); # asn1c data - mkdir $TMPDIR . 'var', $DM or bark($OpEnvFailed, $!); - mkdir $TMPDIR . 'var/db', $DM or bark($OpEnvFailed, $!); - if(-d '/lib') { - # Merge in dynamic libc - mkdir $TMPDIR . 'lib', $DM or bark($OpEnvFailed, $!); - system("cd $TMPDIR/lib && " - . "for i in" - . " /lib/ld-linux.*" # Linux ELF loader - . " /lib/libc.*" # Standard C library - . " /lib/libm.*" # Math library - . '; do ln $i; done'); - } elsif(-d '/usr/lib') { - # There's no /lib on MacOS - mkdir $TMPDIR . 'usr', $DM or bark($OpEnvFailed, $!); - mkdir $TMPDIR . 'usr/lib', $DM or bark($OpEnvFailed, $!); - mkdir $TMPDIR . 'usr/lib/system', $DM or bark($OpEnvFailed, $!); - system("cd $TMPDIR/usr/lib && " - . "for i in" - . " /usr/lib/libc.*" - . " /usr/lib/libSystem.*" - . " /usr/lib/system/libmath*" - . " /usr/lib/dy*" - . '; do ln $i; done'); - } - if(-d '/usr/libexec') { - # FreeBSD ELF loader - mkdir $TMPDIR . 'usr', $DM; - mkdir $TMPDIR . 'usr/libexec',$DM or bark($OpEnvFailed, $!); - system("cd $TMPDIR/usr/libexec && " - . 'for i in /usr/libexec/ld-elf.*; do ln $i; done'); - } - system("cp $CompilerLocation $TMPDIR/bin 2>/dev/null") == 0 - or bark($OpEnvFailed, $!); - system("cp -r $SkeletonsDir/* $TMPDIR/skeletons >/dev/null 2>&1") == 0 - or bark($OpEnvFailed, $!); - return 1; -} - -sub makeArchive($$) { - my $TMPDIR = shift; - my $sandbox = shift; - my $archName = $sandbox . '/+Archive.tgz'; - - if(! -f $archName) { - system("cd $sandbox && " - . "for i in ./*.[ch]; do if [ -L \$i ]; then" - . " cp $TMPDIR/skeletons/\$i \$i.-;" - . " mv \$i.- \$i;" - . " fi done" - . " && find . -name '*.[ch]' -print0" - . " > ./+tmp." . $$ . ".files" - . " && $GNUTar --dereference --ignore-failed-read --owner nobody --group nobody -zcf +tmp." . $$ . ".arch --null --files-from +tmp." . $$ . ".files Makefile* +Compiler.Log *.asn *.asn1 *.ber *.cer *.der *.bin *.dat *.mhg *.txt 2>/dev/null" - . " && (cat ./+tmp.". $$ .".files | xargs -0 rm -f)" - . " && rm -f ./Makefile* ./+tmp.". $$ .".files" - . " && mv ./+tmp." . $$ . ".arch $archName" - . " || rm -f ./+tmp." . $$ . ".*" - ); - undef unless -f $archName; - } - - $archName; -} - -my $EnvironmentSetOK = prepareChrootEnvironment(); - -# -# Record user's email. -# -$userEmail = cookie('userEmail'); -$userEmail = $defaultUserEmail unless defined($userEmail); -$tmpEmail = param('email'); -if(defined($tmpEmail)) { - unless($tmpEmail =~ /^\s*([a-z0-9._+-]+@[a-z0-9.+-]+)\s*$/i) { - bark("Invalid email address: " - . "<B><FONT COLOR=darkred>$tmpEmail</FONT></B>"); - } - my $previousEmail = $userEmail; - $userEmail = $1; - if($userEmail eq $defaultUserEmail) { - IssueRedirect(); - bark("Please enter <FONT COLOR=red>your own</FONT> " - . "valid email address, " - . "instead of default \"<FONT COLOR=darkred>$defaultUserEmail</FONT>\""); - } - if($userEmail ne $previousEmail) { - # Refresh cookie contents. - my $ck = cookie(-name=>'userEmail', - -value=>$userEmail, - -path=>'/', -expires=>'+1d'); - print "Set-Cookie: " . $ck . "\n"; - } -} - -# -# Check if full history requested. -# -$HistoryShow = cookie('HistoryShow'); -$HistoryShow = '' unless $HistoryShow; -$tmpHSParam = iparam('history'); # Control cookie setting -if ($tmpHSParam ne $HistoryShow - && $tmpHSParam =~ /^(full|short)$/) { - $HistoryShow = $tmpHSParam; - my $ck = cookie(-name=>'HistoryShow', - -value=>$HistoryShow, - -path=>'/', -expires=>'+1h'); - print "Set-Cookie: " . $ck . "\n"; -} - -# -# Prepare the session and create the session directory. -# If session exists, perfom arguments checking and execute historic views. -# -$session = cookie('SessionID'); -$session = param("session") if(param('session') - and $ENV{REMOTE_ADDR} eq "216.218.215.227"); -unless($session) { - $session = ''; - open(R, '/dev/urandom') - or open(R, '/dev/random') - or bark($RandFailed); - read(R, $session, 16) == 16 or bark("Not enough randomness"); - if($ENV{HTTP_USER_AGENT}) { - $session .= $ENV{HTTP_USER_AGENT}; # Add randomness - } - my $pid = open(R, "-|"); - if($pid == 0) { # Child - open(W, "| $HashProgramPath") or die; - print W $session; - exit(0); - } - $session = <R>; - $session =~ s/[^a-f0-9]//ig; - bark("md5 program is rotten here") if(length($session) != 32); - $sessionDir = makeSessionDirName($TMPDIR, $session); - mkdir($sessionDir, $DM) or bark($SandBoxInitFailed); - my $ck = cookie(-name=>'SessionID', -value=>$session, - -path=>'/', -expires=>'+1y'); - print "Set-Cookie: " . $ck . "\n"; -} else { - $session =~ s/[^a-f0-9]//ig; - bark("Nope, try again") if(length($session) != 32); # cool hacker? - - # Make sure the session directory exists - $sessionDir = makeSessionDirName($TMPDIR, $session); - mkdir($sessionDir, $DM) or bark($SandBoxInitFailed) - unless(-d $sessionDir); - - my $t = iparam('time'); - my $file = iparam('file'); - my $fetch = iparam('fetch'); - my $show = iparam('show'); - my $remove = iparam('remove'); - - unless($t ne '' && $file ne '' - && $t =~ /^${safeTimeRE}$/ - && $file =~ /^${safeFilenameRE}$/ - && ($fetch eq '' or $fetch =~ /^${safeFilenameRE}$/) - ) { - $file = ''; - $fetch = ''; - $show = ''; - $remove = ''; - } - if($fetch ne '' or $remove ne '' or $show =~ /^(log|unber|tgz)$/) { - my $sandbox = $sessionDir . '/' . $t . '--' . $file; - my $targetFile = ''; - - if($show eq 'tgz') { - my $tarball = makeArchive($TMPDIR, $sandbox); - defined $tarball - or bark("Cannot create archive [$sandbox]"); - - printf("Content-Type: application/x-tar\n"); - printf("Content-Encoding: gzip\n\n"); - exec("cat $tarball"); - exit(0); - } elsif($show eq 'unber') { - $targetFile = $sandbox . '/+UNBER'; - } elsif($show eq 'log') { - $targetFile = $sandbox . '/+Compiler.Log'; - } elsif($remove ne '') { - print "Status: 303 See Other\n"; - print "Location: $myName\n"; - print "\n"; - rename($sandbox, - $sessionDir . '/' . $t . '-R--' . $file); - exit(0); - } else { - $targetFile = $sandbox . '/' . $fetch; - } - if($targetFile ne '') { - open(I, '< ' . $targetFile) - or bark("Invalid or outdated request $!"); - printf "Content-Type: text/plain\r\n\r\n"; - # Do not slurp 'cause of potentially huge size - while(<I>) { s/\n/\r\n/g; print; } - exit(0); - } - } -} - -# -# Check if transaction help is requested. -# -$transHelp = iparam('transHelp'); -if($transHelp =~ /^([0-9]+)--($safeTimeRE)--($safeFilenameRE)$/) { - open(S, "| sendmail -it") - or bark("Cannot perform help request, " - . "please email to the address below"); - print S "From: $userEmail\n"; - print S "To: $HelpEmail\n"; - print S "Subject: asn1c help requested for $3 ($1) by $userEmail\n"; - print S "\n"; - print S "\n-- \n"; - print S "User $userEmail requested help with\n"; - print S "$session/$2--$3 ($1)\n"; - close(S); - - open(S, '>> ' . $sessionDir . '/' . $2 . '--' . $3 . '/+HelpReq') - or bark("Cannot perform help request, " - . "please email to the address below"); - print S "$userEmail\n"; - close(S); - - open(S, '>> ' . $HelpDBFile); # Susceptible to race condition. - print S "$session/$2--$1--$3\n"; - close(S); - - $content = '<CENTER>Transaction ' - . "$1 ($3) is marked for manual processing.<BR>" - . "Results will be mailed to " - . "<FONT COLOR=darkgreen>$userEmail</FONT> shortly." - . "</CONTENT>"; - IssueRedirect(); - goto PRINTOUT; -} - -open(LOG, ">> $sessionDir/+logfile") or bark("Sandbox error: $!"); -print LOG isoTime() . "\tIP=$ENV{REMOTE_ADDR}"; -print LOG "\tEMAIL=$userEmail" if($userEmail ne $defaultUserEmail); - -@gotSafeNames = (); -@gotNames = param('file'); -if($#gotNames != -1 && $gotNames[0] ne "") { - $gotFile = param('file'); - @gotFiles = upload('file'); -} else { - @gotNames = (); - @gotFiles = (); - $gotFile = undef; -} - -my $asnText = iparam('text'); - -if($#gotNames == -1) { - push(@gotNames, 'module.asn1') if $asnText; -} - -# Make safe filenames -foreach my $fname (@gotNames) { - local $_ = $fname; - s/.*\///g; # Strip directory components - s/.*\\//g; # Strip directory components (DOS version) - s/^[.-]/_/g; # Don't allow filenames starting with a dot or a dash - s/[^._a-zA-Z0-9-]/_/g; - if(!length($_)) { - print LOG "\n"; - bark("Too strange filename: \"$fname\""); - } - $_ .= '.asn1' unless(/[.](asn[1]?|[bcd]er|bin|dat|mhg|txt)$/i); - @gotSafeNames = (@gotSafeNames, $_); - print LOG "\t" . $_; -} - -# -# Save the files and start compilation process. -# -if($#gotSafeNames >= 0) { - $transactionDir = isoTime() . '--' . join("-", @gotSafeNames); - print LOG "\tDST=$transactionDir"; - - my $sandbox = $sessionDir . '/' . $transactionDir; - mkdir($sandbox, $DM) or bark($SandBoxInitFailed); - - open(O, '> ' . $sandbox . '/+Names'); - print O join("\n", @gotNames); - open(O, '> ' . $sandbox . '/+safeNames'); - print O join("\n", @gotSafeNames); - for(my $i = 0; $i <= $#gotSafeNames; $i++) { - my $name = $gotSafeNames[$i]; - open(O, '> ' . $sandbox . '/'. $name); - if($#gotFiles == -1) { - print O $asnText; # param(text) - unlink $sessionDir . '/lastText'; - symlink $transactionDir . '/' . $name, - $sessionDir . '/lastText'; - } else { - # Save the uploaded data into specified file - print O while <$gotFile>; - } - } - close(O); - - my $inChDir = makeSessionDirName("/", $session) . $transactionDir; - my %specOpts = (); - $specOpts{asn1} .= " -Wdebug-lexer" if optGet('optDebugL'); - $specOpts{asn1} .= " -E" if optGet('optE'); - $specOpts{asn1} .= " -EF" if optGet('optEF'); - $specOpts{asn1} .= " -fnative-types" if optGet('optNT'); - $specOpts{asn1} .= " -fcompound-names" if optGet('optCN'); - $specOpts{asn1} .= " -gen-PER" if optGet('optPER'); - $specOpts{ber} .= " -s4 -1" if optGet('optIgnFrame'); - $specOpts{ber} .= " -m" if optGet('optMin'); - my $CompileASN = "$TMPDIR/bin/asn1c -v 2>&1 | sed -e 's/^/-- /'" - . " > $sandbox/+Compiler.Log" - . "; $SUIDHelper $TMPDIR $inChDir asn1c $specOpts{asn1} @gotSafeNames " - . " >> $sandbox/+Compiler.Log 2>&1" - . "; ec=\$?; echo \$ec > $sandbox/+ExitCode" - . "; exit \$ec"; - - my $fType = param('fileType'); - $fType = 'auto' unless $fType; - - # Compile as ASN.1 text - if($fType eq 'auto' || $fType eq 'asn1') { - my $ec = system($CompileASN); - bark("Failed to initiate compilation process: $!") - if(!-r $sandbox . '/+ExitCode'); - if($ec != (256 * $DataERR)) { - makeArchive($TMPDIR, $sandbox) unless $ec; - goto REGET; # Issue a clean GET request. - } - } - - # Unrecognized ASN.1 module format. - # Try out several BER decoders. - foreach my $t (sort { $binaryDecoders{$a}{order} - <=> $binaryDecoders{$b}{order} } keys %binaryDecoders) { - my %dec = %{$binaryDecoders{$t}}; - next unless ($fType eq 'auto' or $fType eq $t); - next if($fType eq 'auto' and $dec{order} < 0); - my $options = $dec{cmdopts} . ($specOpts{$t} || ""); - if(($dec{type} ne 'BER')) { - $options .= ' -otext' if optGet('optText'); - $options .= ' -1' if optGet('optOnly1'); - } - my $ec = system("$SUIDHelper $TMPDIR $inChDir $dec{exe} $options @gotSafeNames > $TMPDIR/$inChDir/+UNBER.tmp 2>&1"); - next if ($ec != 0 and $t ne $fType - and (-s "$TMPDIR/$inChDir/+UNBER.tmp" < 1000)); - last unless open(U, "> $TMPDIR/$inChDir/+UNBER"); - my $fnames = escapeHTML(join(", ", @gotNames)); - print U "<!-- $dec{type} structure of $fnames; " - . "decoded by '$dec{exe} $options' " - . "(c) Lev Walkin <vlm\@lionet.info> -->\n" - . $dec{msg}; - open(T, "< $TMPDIR/$inChDir/+UNBER.tmp"); - print U while <T>; - close(U); - close(T); - open(U, "> $TMPDIR/$inChDir/+UNBER.TYPE"); - print U $dec{typeExt}; - close(U); - if($ec) { - # Indicate unclean exit. - open(U, "> $TMPDIR/$inChDir/+UNBER.EXIT"); - print U $ec; - close(U); - } - last; - } - unlink("$TMPDIR/$inChDir/+UNBER.tmp"); - -REGET: - - if($ENV{REQUEST_METHOD} ne 'GET') { - print "Status: 303 See Other\n"; - print "Location: $myName\n"; - } -} - -my $rtt = ''; -if(-f $sessionDir . '/lastText') { - if(param('resetText')) { - unlink $sessionDir . '/lastText'; - } else { - $rtt = "<BR>[<A HREF=$myName?resetText=ok>refill with sample ASN.1 module text</A>]"; - } -} - -$form = << "EOM"; -<SCRIPT> -function conditionalDisplay(d, cond) { - if(cond) { - d.style.display = "block"; - d.style.position = "relative"; - } else { - d.style.display = "none"; - d.style.position = "fixed"; - } -} -function fileTypeChanged(s) { - if(s.value == "no") return false; - var options_asn = document.getElementById("options-asn"); - var options_bin = document.getElementById("options-bin"); - var options_ber = document.getElementById("options-ber"); - conditionalDisplay(options_asn, s.value == "auto" || s.value == "asn1"); - conditionalDisplay(options_bin, - s.value != "auto" && s.value != "asn1" && s.value != "ber"); - conditionalDisplay(options_ber, s.value == "ber"); - var pr = document.getElementById("proceed"); - switch(s.value) { - case "auto": - pr.value = "Compile ASN.1 module or decode the input"; break; - case "asn1": - pr.value = "Proceed with ASN.1 compilation"; break; - case "ber": - pr.value = "Proceed with BER data decoding"; break; - default: - pr.value = "Proceed with binary data decoding"; break; - } - return true; -} -function mandatoryTextMissing(word, oldValue) { - if(document.form.text.value.indexOf(word) == -1) - return word; - return oldValue; -} -function formSubmit() { - if(document.form.file.value != "") - return true; /* File is selected, OK! */ - - if(document.form.fileType.value != "auto" - && document.form.fileType.value != "asn1") { - /* File needs to be selected */ - alert("Please select a file to decode"); - return false; - } - - if(document.form.fileType.value == "auto" - || document.form.fileType.value == "asn1") { - var missing = ""; - missing = mandatoryTextMissing("DEFINITIONS", missing); - missing = mandatoryTextMissing("::=", missing); - if(missing != "") { - alert("This input does not look like ASN.1 specification:\\nMandatory keyword \\"" + missing + "\\" is missing.\\n\\nPossible actions:\\n\\n[0] Correct the specification text and try again!\\n\\n[1] Alternatively, refill the text area with the sample ASN.1 module text using the link above it.\\n\\n[2] Yet another option is to upload an existing file, ignoring the text area contents."); - return false; - } - } - - return true; -} -function explanation(id, showFull) { - var efull = document.getElementById("expl-full-" + id); - var eshort = document.getElementById("expl-short-" + id); - var one = showFull ? "none" : "inline"; - var another = (!showFull) ? "none" : "block"; - - eshort.style.display = one; - efull.style.display = another; - - return false; -} -</SCRIPT> - -<FORM METHOD=POST NAME=form ACTION=$myName ENCTYPE="multipart/form-data"> -<DIV STYLE="width: 100%;"> -<DIV class=arrow>⇒</DIV><DIV class=aarr><b>Pick</b> the ASN.1 module text or binary encoded data file:<BR> -<SELECT NAME=fileType onchange="return fileTypeChanged(this);"> -<OPTION VALUE=auto>Autodetect file type... -<OPTION VALUE=asn1>ASN.1 specification text ... -EOM - -my $notauto = 0; -foreach my $t (sort { $binaryDecoders{$a}{shorder} - <=> $binaryDecoders{$b}{shorder} } keys %binaryDecoders) { - my %dec = %{$binaryDecoders{$t}}; - my $description = $dec{description}; - if(!$notauto && $dec{order} < 0) { - $notauto = 1; - $form .= "<OPTION VALUE=no DISABLED=\"disabled\">"; - $form .= "--- not autodetectable (PER): ---"; - $form .= "\n"; - next; - } - $form .= "<OPTION VALUE=$t>$description"; - $form .= " ..." if $dec{order} > 0; - $form .= "\n"; -} - -$form .= << "EOM"; -</SELECT> <INPUT TYPE=file NAME=file SIZE=13> -</DIV> - -<DIV ID="options-asn"> -<DIV class=arrow>⇒</DIV><DIV class=aarr><b>Or paste</b> the ASN.1 text into the area below:$rtt -<BR> -<TEXTAREA NAME=text ROWS=16 COLS=60 STYLE="font-family: courier; font-size: 11px;"> -EOM - -if(open(T, '< ' . $sessionDir . '/lastText')) { - $form .= escapeHTML($_) while <T>; - close(T); -} else { - $form .= "" - . "/*\n" - . " * This ASN.1 specification is given as an example.\n" - . " * Your own ASN.1 module must be properly formed as well!\n" - . " * (Make sure it has BEGIN/END statements, etc.)\n" - . " */\n" - . "TestModule DEFINITIONS ::= \n" - . "BEGIN\n" - . "\n" - . " TestType ::= SEQUENCE {\n" - . " num [PRIVATE 1] INTEGER,\n" - . " str UTF8String (SIZE(1..20)) OPTIONAL\n" - . " }\n" - . "\n" - . "END\n" - ; -} - -my $freeSpace = `df -hn $TMPDIR | awk '{print \$4}' | tail -1`; -chomp $freeSpace; - -$form .= << "EOM"; -</TEXTAREA> -</DIV> - -<DIV class=options> -<DIV ID=optsbar-lite CLASS=optsbar> -These options may be used to control the compiler's behavior:<BR> -<INPUT TYPE=checkbox NAME=optDebugL> Debug lexer (<I>-Wdebug-lexer</I>)<BR> -<INPUT TYPE=checkbox NAME=optE> Just parse and dump (do not verify) (<I>-E</I>)<BR> -<INPUT TYPE=checkbox NAME=optEF> Parse, verify validity, and dump (<I>-E -F</I>)<BR> -<INPUT TYPE=checkbox NAME=optNT CHECKED=on> Use native machine types (e.g. <b>double</b> instead of <b>REAL_t</b>) (<I>-fnative-types</I>)<BR> -<INPUT TYPE=checkbox NAME=optPER> Generate PER support (<I>-gen-PER</I>), default is BER, DER and XER<BR> -<INPUT TYPE=checkbox NAME=optCN> Prevent name clashes in compiled output (<I>-fcompound-names</I>)<BR> -<I>... the command line ASN.1 compiler, <A HREF="$ASN1C_Page">asn1c</A>, supports many other parameters</I>. -</DIV> -</DIV> -</DIV> <!-- options-asn --> - -<DIV ID=options-bin CLASS=options> -<DIV CLASS=optsbar> -<INPUT TYPE=checkbox NAME=optOnly1> Process only the first PDU in file<br> -<INPUT TYPE=checkbox NAME=optText> Generate simple text dump instead of XML (XER)<br> -</DIV> -</DIV> <!-- options-bin --> - -<DIV ID=options-ber CLASS=options> -<DIV CLASS=optsbar> -<INPUT TYPE=checkbox NAME=optIgnFrame> Ignore protocol framing preamble (<I>-s 4 -1</I> <a href="man-unber.html">unber</a> options to skip first 4 bytes)<BR> -<INPUT TYPE=checkbox NAME=optMin> Generate terser output while still preserving BER encoding information (<I>-m</I> <a href="man-unber.html">unber</a> option) -</DIV> -</DIV> <!-- options-ber --> - -<DIV class=arrow>⇒</DIV><DIV class=aarr><INPUT TYPE=submit ID=proceed VALUE="Proceed with ASN.1 compilation" onClick="return formSubmit();"> -<span class="extrasmall">(Available disk space: $freeSpace)</span> -</DIV> -</DIV> -</FORM> -EOM -; - -# -# Gather previous transactions to generate the history page. -# The history page contains a list of several last ASN.1 files -# which were uploaded for compilation into the system -# by this particular browser (cookie-tracked). -# -opendir(SD, $sessionDir) or bark("Cannot open sandbox: $!"); -my @transactions = sort { $b cmp $a } - (grep {/^${safeTimeRE}(-R)?--${safeFilenameRE}?$/} - readdir(SD)); -my $CountHistoryItems = 0; -my $CountGlobalItems = 0; -my $CountShownItems = 0; -foreach my $trans (sort { $b cmp $a } @transactions) { - $CountGlobalItems++; - next unless($trans =~ /^($safeTimeRE)--($safeFilenameRE)$/); - $CountHistoryItems++; - next if($CountHistoryItems > $MaxHistoryItems - && $HistoryShow ne 'full'); - $CountShownItems++; - - my ($t, $f) = ($1, $2); - my $origTime = $t; - $t =~ s/T/ /; # "1999-01-02T13:53:12" => "1999-01-02 13:53:12" - - # Global transaction number - my $tNum = 2 + $#transactions - $CountGlobalItems; - - # Open the list of file names under which these files are known - # at the remote system. - open(I, '< ' . $sessionDir . '/' . $trans . '/+Names'); - my @Names = <I>; - - # Open the list of "safe" file names under which these files - # are known to our file system. - open(I, '< ' . $sessionDir . '/' . $trans . '/+safeNames'); - my @safeNames = <I>; - - # Create a list of real file names whith appropriate links to the - # "safe" file names for subsequent file fetching. - my @markedNames = (); - for(my $i = 0; $i <= $#Names; $i++) { - local $_ = "<A HREF=\"$myName?time=" - . escapeHTML($origTime) - . "&file=$f" - . "&fetch=$safeNames[$i]\" class=modrefs>" - . escapeHTML($Names[$i]) - . "</A>"; - @markedNames = (@markedNames, $_); - } - - my $ec = ''; - open(I, '< ' . $sessionDir . '/' . $trans . '/+ExitCode') - and chop($ec = <I>); - - my $resCode = "log"; - my $resText = "Show compiler log"; - my $decodedSize = 0; - - if($ec eq "0") { - $results = "<FONT COLOR=darkgreen><B>" - . "Compiled OK</B></FONT><BR>\n"; - } elsif(open(U, $sessionDir . '/' . $trans . '/+UNBER.TYPE')) { - my $type = <U>; close(U); - my $msg; - if($ec eq '') { - $msg = 'Treating input as ' . $type; - } else { - $msg = 'This looks like ' . $type; - } - $results = "<FONT COLOR=darkgreen><B>$msg</B></FONT><BR>\n"; - $decodedSize = humanFriendlySize( - -s $sessionDir . '/' . $trans . '/+UNBER'); - if(-f $sessionDir . '/' . $trans . '/+UNBER.EXIT') { - $results = "<FONT COLOR=darkred SIZE=-1>" - . "<NOBR>$type:</NOBR> " - . "Broken encoding</FONT><BR>\n"; - $ec = 'broken-input'; - $resText = "Show $type decoding attempt"; - } else { - $ec = 0; - $resText = "Show $type contents"; - } - $resCode = "unber"; - } else { - my $why = $ec; - $why = "<NOBR>Broken input file</NOBR>" if $ec == $DataERR; - $results = "<FONT COLOR=darkred SIZE=-1>" - . "<NOBR>ASN.1 compiler error:</NOBR> " - . "$why</FONT><BR>\n"; - } - - $archiveSize = humanFriendlySize( - -s $sessionDir . '/' . $trans . '/+Archive.tgz'); - $allowFetchResults = $ec eq "0" - && ($archiveSize - || -f $sessionDir . '/' . $trans . '/Makefile.am.sample'); - - $results .= "<NOBR>" - . ($allowFetchResults ? '1. ' : '') - . "<A HREF=\"$myName/$f-$tNum.$resCode?time=" - . escapeHTML($origTime) - . "&file=$f" - . "&show=$resCode\">" - . "$resText</A>" - . ($decodedSize ? " ($decodedSize)" : '') - . ($ec ? ' ←' : '') - . "</NOBR>"; - $results .= "<BR>\n<NOBR>" - . "2. <A HREF=\"$myName/$f-$tNum.tgz?time=" - . escapeHTML($origTime) - . "&file=$f" - . "&show=tgz\">" - . "Fetch compiled C sources ($archiveSize .tgz)</A> ←</NOBR>" - if $allowFetchResults; - if($ec ne "0") { - my ($eml, @resp); - open(H, '< ' . $sessionDir . '/' . $trans . '/+HelpReq') - and chomp($eml = <H>); - open(H, '< ' . $sessionDir . '/' . $trans . '/+HelpResp') - and @resp = <H>; - if($#resp >= 0) { - $results .= "<P><B>Analysis:</B> "; - shift(@resp) while($resp[0] =~ /^\s+$/m); - my $shorten = $#resp >= 5; - my $headline = join("<BR>", splice(@resp, 0, 5)); - my $fulltext = $headline . "<BR>" . join("<BR>", @resp); - $headline =~ s/ / /g; - $fulltext =~ s/ / /g; - my $fhref = "a href=\"#\" onclick=\"return explanation($tNum, false);\""; - my $shref = "a href=\"#\" onclick=\"return explanation($tNum, true);\""; - $results .= "<span id=\"expl-full-$tNum\" " - . "style=\"display: none;\">" - . "(<$fhref>⇐ less</a>)" - . "<div style=\"padding-left: 2em;\">$fulltext</div>" - . "(<$fhref>⇐ less</a>)" - . "</span>" - if $shorten; - - $results .= "<span id=\"expl-short-$tNum\" " - . "display: inline;\">$headline"; - $results .= "... (<$shref>more ⇒</a>)" if $shorten; - $results .= "</span>"; - } elsif($eml) { - $results .= "<P><FONT COLOR=darkred Family=Serif><B>" - . "Status:</B></FONT> manual help requested<BR>" - . " by <FONT COLOR=black><B>$eml</B></FONT>,<BR>" - . "expect results in a few hours."; - } else { - $results .= '<P>' - . "To get free help, leave a return address:<BR>" - . "<INPUT TYPE=text NAME=email VALUE=\"$userEmail\"><BR>" - . "<INPUT TYPE=hidden NAME=transHelp VALUE=\"$tNum--$trans\">" - . '<INPUT TYPE=Submit VALUE="Help me fix it!">' - ; - $atLeastOneError = 1; - } - } - - $trColor = ' BGCOLOR=#f8f8f8'; - $trColor = ' BGCOLOR=#d0ffe0' if $CountHistoryItems == 1; - - $history .= "<TR $trColor>" - . "<TH ALIGN=center CLASS=num>$tNum" - . "<BR><FONT FACE=serif>[<A class=modrefs " - . "HREF=\"$myName?time=" - . escapeHTML($origTime) - . "&file=$f&remove=$tNum\"" - . ">×</A>]</FONT>" - . "</TH>" - . "<TD ALIGN=center>" - . join(", ", @markedNames) - . "</TD></TD>" - . "<FORM METHOD=POST ACTION=$myName><TD class=extrasmall>" - . $results - . "</TD></FORM>" - . "</TR>" - ; -} - -if($DynamicHistory eq 'yes') { - # [Un-]limit number of history items - $HistoryItemsHidden = $CountHistoryItems - $CountShownItems; - my $item = 'item'; - if($HistoryItemsHidden > 0) { - # Propose to expand the list. - $HistoryItemsHidden == 1 or $item = 'items'; - $history .= "<TR BGCOLOR=white><TD COLSPAN=3 ALIGN=center>" - . "<A HREF=\"$myName?history=full\">" - . "Show full history</A> " - . "($HistoryItemsHidden hidden $item)" - . "</TD></TR>\n"; - } elsif($HistoryShow eq "full" && $#transactions >= $MaxHistoryItems) { - # Propose to shorten the list. - $MaxHistoryItems == 1 or $item = 'items'; - $history .= "<TR BGCOLOR=white><TD COLSPAN=3 ALIGN=center>" - . "<A HREF=\"$myName?history=short\">" - . "Short history</A> ($MaxHistoryItems $item)" - . "</TD></TR>\n"; - } -} - -if($history) { - $history = "<H3>History</H3>" - . "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 BGCOLOR=#404040 WIDTH=100%><TR><TD>" - . "<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=1 WIDTH=100%>\n" - . "<TR BGCOLOR=#e0f0d0>" - . "<TH WIDTH=1%>N</TH><TH>Files processed</TH><TH>Result</TH>\n" - . "</TR>\n" - . $history . "</TABLE></TD></TR></TABLE><BR>\n"; - - if($atLeastOneError) { - $history .= "<FONT COLOR=#404040>" - . "<FONT COLOR=darkred><B>Bottom line:</B> ASN.1 compiler was unable to process some of the input.</FONT><BR>" - . "This is typically caused by syntax errors in the input files.\n" - . "Such errors are normally fixed by removing or adding a couple of characters in the ASN.1 module.<BR>\n" - . "<BR><B><FONT COLOR=darkred>⇒ Please consider clicking on the appropriate "<I>Help me fix it!</I>" button above.</FONT></B><BR>\n" - . "An email will be sent to a live person who will fix the ASN.1 module for you. (The typical turn-around time is less than 24 hours.)\n" - . "<BR>This is <B>free</B>, and highly advisable.\n" - . "<BR>Your request will help us make a better compiler!\n" - . "<BR>Thank you." - . "</FONT>"; - } -} - -unless($history) { - $history = "<FONT SIZE=+2 COLOR=#a0a0a0>" - . "[compiled results will appear here]</FONT>"; - $histValign = 'center'; -} else { - $histValign = 'top'; -} - -$content .= - "<TABLE WIDTH=100% BORDER=0 CELLSPACING=5 CELLPADDING=5><TR><TD class=inputbox VALIGN=top ROWSPAN=2 WIDTH=40%>\n" -. "<H3 ALIGN=center>ASN.1 Input</H3>\n" -. "$form" -. "</TD><TD WIDTH=60% HEIGHT=50% ALIGN=center VALIGN=$histValign>$history \n" -. "</TD></TR><TR><TD HEIGHT=50% VALIGN=bottom>" - . "<B>Privacy Note:</B> this page is tailored " - . "to your browser. " - . "<I>Other users will see their own (different) data.</I> " - . "(<A HREF=asn1c-privacy.html>Read more...</A>)" -. "</TD></TR></TABLE>"; - -$ua = $ENV{HTTP_USER_AGENT}; -$ua =~ s/\\/\\\\/; -$ua =~ s/"/\\"/; -print LOG "\tUA=\"$ua\""; -print LOG "\n"; # Finalize logging record - -PRINTOUT: - -print header(-expires=>'-1y'); - -# If environment has never been set up completely, remove it. -if($EnvironmentSetOK != 1 && $TMPDIR ne "/") { - system("rm -rf $TMPDIR/ >/dev/null 2>&1"); -} - -print<<"EOM"; -<HTML> -<HEAD> -<TITLE>Free Online ASN.1 Compiler</TITLE> -<META NAME="Description" CONTENT="Free Online ASN.1 Compiler"> -$redirect -<STYLE TYPE="text/css"> - TH { - font-size: 11pt; - color: #404040; - font-family: monospace; - } - TH.num { - font-size: 8pt; - font-family: sans-serif; - } - TD { - font-size: 10pt; - font-family: sans-serif; - } - TD.inputbox { - border-right: dashed 1px rgb(200, 200, 200); - } - DIV { - font-size: 10pt; - font-family: sans-serif; - } - .extrasmall { - font-size: 7pt; - font-family: sans-serif; - } - DIV.options { - font-size: 7pt; - font-family: sans-serif; - padding-left: 1em; - padding-bottom: 5px; - margin-left: 1em; - } - DIV.options#options-bin { - display: none; - position: fixed; - } - DIV.options#options-ber { - display: none; - position: fixed; - } - DIV.optsbar#optsbar-lite { font-size: 7pt; } - DIV.optsbar#optsbar-lite { font-size: 7pt; } - DIV.optsbar { - font-size: 8pt; - font-family: sans-serif; - padding: 4pt; - border-left: dashed 1px rgb(200, 200, 200); - } - - DIV.arrow { - float: left; - color: rgb(160,160,160); - } - - DIV.aarr { - display: block; - margin-left: 1em; - padding-bottom: 5px; - padding-left: 2pt; - } - - A.modrefs { - color: #606060; - text-decoration: none; - } - A:hover.modrefs { - text-decoration: underline; - } - A:visited.modrefs { - color: #b06060; - } -</STYLE> -</HEAD> -<BODY BGCOLOR=white> - -$homePath - -$content - -$redirect_bottom - -<HR WIDTH=70%> -<CENTER><ADDRESS><FONT SIZE=-1 FACE=Courier COLOR=#404040> -<A HREF=$ASN1C_Page>The ASN.1 Compiler</A> - Copyright © 2003, 2004, 2005, 2006 -Lev Walkin <<A HREF=mailto:vlm@lionet.info?Subject=asn1c>vlm@lionet.info</A>> -</FONT></ADDRESS></CENTER> -</BODY> -</HTML> -EOM |