public QbservableServiceOptions(QbservableServiceOptions clone) { Contract.Requires(clone != null); Contract.Ensures(!IsFrozen); sendServerErrorsToClients = clone.sendServerErrorsToClients; enableDuplex = clone.enableDuplex; allowExpressionsUnrestricted = clone.allowExpressionsUnrestricted; expressionOptions = clone.expressionOptions; evaluationContext = clone.evaluationContext; }
protected override Expression VisitNew(NewExpression node) { var type = node.Constructor.DeclaringType; if (!Context.IsKnownType(type)) { throw new ExpressionSecurityException("Type \"" + type + "\" is not permitted."); } if (!Options.HasFlag(ExpressionOptions.AllowConstructors) && !type.GetIsPrimitive() && !ServiceEvaluationContext.IsExtendedPrimitiveType(type)) { throw new ExpressionSecurityException("Constructors are not permitted."); } return(base.VisitNew(node)); }
public SecurityExpressionVisitor(QbservableServiceOptions serviceOptions) { this.options = serviceOptions.ExpressionOptions; this.context = serviceOptions.EvaluationContext; if (options.HasFlag(ExpressionOptions.AllowTypeTests) && options.HasFlag(ExpressionOptions.AllowExplicitConversions)) { context.EnsureHasKnownOperator("Cast"); context.EnsureHasKnownOperator("OfType"); } if (options.HasFlag(ExpressionOptions.AllowCatchBlocks)) { context.EnsureHasKnownOperator("Catch"); context.EnsureHasKnownOperator("OnErrorResumeNext"); context.EnsureHasKnownOperator("Retry"); } }
public SecurityExpressionVisitor(QbservableServiceOptions serviceOptions) { Contract.Requires(serviceOptions != null); Options = serviceOptions.ExpressionOptions; Context = serviceOptions.EvaluationContext; if (Options.HasFlag(ExpressionOptions.AllowTypeTests) && Options.HasFlag(ExpressionOptions.AllowExplicitConversions)) { Context.EnsureHasKnownOperator("Cast"); Context.EnsureHasKnownOperator("OfType"); } if (Options.HasFlag(ExpressionOptions.AllowCatchBlocks)) { Context.EnsureHasKnownOperator("Catch"); Context.EnsureHasKnownOperator("OnErrorResumeNext"); Context.EnsureHasKnownOperator("Retry"); } }