You need exists. You can put it after realloc in your rule header. When
you use python it always takes the forall semantics, because it doesn't
know what you are doing in the python code. Exists is the default when
there is a * in the semantic patch.
julia
On Tue, 10 Dec 2013, Eric Leblond wrote:
> Hello,
>
> I'm trying to match when a expression is allocated via SCMalloc and only
> reused next for a Realloc.
>
> @realloc@
> position p2;
> expression x;
> identifier func =~ "SCMalloc";
> @@
>
> x = func(...)
> ... when != x
> x@p2 = SCRealloc(...)
>
> @script:python@
> p1 << realloc.p2;
> @@
> print "Realloc at %s:%s." % (p1[0].file, p1[0].line)
>
> It is matching if I've got something like:
>
> ssl_state->curr_connp->trec = SCMalloc( ssl_state->curr_connp->trec_len );
> ssl_state->curr_connp->trec_len = ssl_state->curr_connp->trec_len + 2 *
> input_len + 1;
> ssl_state->curr_connp->trec = SCRealloc( ssl_state->curr_connp->trec, 2 );
>
> But it does not match on the following code:
>
> static int SSLv3ParseHandshakeType(SSLState *ssl_state, uint8_t *input,
> uint32_t input_len)
> {
> switch (ssl_state->curr_connp->handshake_type) {
> case SSLV3_HS_CERTIFICATE:
> if (ssl_state->curr_connp->trec == NULL) {
> ssl_state->curr_connp->trec_len = 2;
> ssl_state->curr_connp->trec = SCMalloc(
> ssl_state->curr_connp->trec_len );
> }
> if (ssl_state->curr_connp->trec_pos + input_len >=
> ssl_state->curr_connp->trec_len) {
> ssl_state->curr_connp->trec_len = 2 * input_len + 1;
> ssl_state->curr_connp->trec = SCRealloc(
> ssl_state->curr_connp->trec, 2 );
> }
> if (unlikely(ssl_state->curr_connp->trec == NULL)) {
> return -1;
> }
> }
> }
>
> I've read that "..." is matching anything in the control-flow but in
> this case it is possible that both paths are taken. So in my
> understanding this should match.
>
> What am I missing ?
>
> I'm using spatch version 1.0.0-rc19 with Python support and with PCRE
> support (debian sid package).
>
> PS: it seems that http://cocci.ekstranet.diku.dk/wiki/ linked as the
> wiki is currently down.
>
> BR,
> --
> Eric Leblond <[email protected]>
>
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci
>
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci