#!/bin/sh
#
# Check syscall set parsing syntax.
#
# Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
# 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. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR 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.

. "${srcdir=.}/syntax.sh"

check_syscall()
{
	[ -z "$2" ] || check_e "invalid system call '$1'" -e"$2"

	check_e "invalid system call '$1'" -e "$2"
	check_e "invalid system call '$1'" -etrace="$2"
	check_e "invalid system call '$1'" -e trace="$2"

	check_e "invalid system call '$1'" -eabbrev="$2"
	check_e "invalid system call '$1'" -e abbrev="$2"

	check_e "invalid system call '$1'" -everbose="$2"
	check_e "invalid system call '$1'" -e verbose="$2"

	check_e "invalid system call '$1'" -eraw="$2"
	check_e "invalid system call '$1'" -e raw="$2"

	check_e "invalid system call '$1'" -einject="$2"
	check_e "invalid system call '$1'" -e inject="$2"
	check_e "invalid system call '$1'" -einject="$2:"
	check_e "invalid system call '$1'" -einject="$2::"
	check_e "invalid system call '$1'" -einject="$2:::"
	check_e "invalid system call '$1'" -e inject="$2:"
	check_e "invalid system call '$1'" -e inject="$2::"
	check_e "invalid system call '$1'" -e inject="$2:::"
	check_e "invalid system call '$1'" -einject="$2:when=3"
	check_e "invalid system call '$1'" -e inject="$2:when=3"

	check_e "invalid system call '$1'" -efault="$2"
	check_e "invalid system call '$1'" -e fault="$2"
	check_e "invalid system call '$1'" -efault="$2:"
	check_e "invalid system call '$1'" -efault="$2::"
	check_e "invalid system call '$1'" -efault="$2:::"
	check_e "invalid system call '$1'" -e fault="$2:"
	check_e "invalid system call '$1'" -e fault="$2::"
	check_e "invalid system call '$1'" -e fault="$2:::"
	check_e "invalid system call '$1'" -efault="$2:when=4"
	check_e "invalid system call '$1'" -e fault="$2:when=4"
}

for arg in '' , ,, ,,, ; do
	check_syscall "$arg" "$arg"
	check_syscall "!$arg" "!$arg"
done

for arg in -1 -2 -3 -4 -5 \
	   invalid_syscall_name \
	   0x 0y \
	   32767 \
	   2147483647 \
	   2147483648 \
	   4294967295 \
	   4294967296 \
	   /non_syscall \
	   % %not_a_class \
	   ; do
	check_syscall "$arg" "$arg"
	check_syscall "$arg" "!$arg"
	check_syscall "$arg" "1,$arg"
done

for arg in '!chdir' none all; do
	check_syscall "$arg" "1,$arg"
done

# invalid syscall, multiple syscalls
for arg in %desc \
	   %file \
	   %memory \
	   %process \
	   %network \
	   chdir \
	   1 \
	   ?32767 \
	   ?invalid \
	   ?%not_a_class \
	   ?/non_syscall \
	   ; do
	check_syscall nonsense "$arg,nonsense"
	check_syscall nonsense "!$arg,nonsense"
	check_syscall nonsense "nonsense,$arg"
	check_syscall nonsense "!nonsense,$arg"
done

check_e_using_grep 'regcomp: \+id: [[:alpha:]].+' -e trace='/+id'
check_e_using_grep 'regcomp: \*id: [[:alpha:]].+' -e trace='/*id'
check_e_using_grep 'regcomp: \{id: [[:alpha:]].+' -e trace='/{id'
check_e_using_grep 'regcomp: \(id: [[:alpha:]].+' -e trace='/(id'
check_e_using_grep 'regcomp: \[id: [[:alpha:]].+' -e trace='/[id'
