Added binary protocol COM_STMT_PREPARE to modutil_get_SQL.

This commit is contained in:
Markus Makela 2015-03-03 14:42:55 +02:00
parent 0e133cf82a
commit 692dd79235
2 changed files with 19 additions and 1 deletions

View File

@ -63,6 +63,23 @@ unsigned char *ptr;
return ptr[4] == 0x03; // COM_QUERY
}
/**
* Check if a GWBUF structure is a MySQL COM_STMT_PREPARE packet
*
* @param buf Buffer to check
* @return True if GWBUF is a COM_STMT_PREPARE packet
*/
int
modutil_is_SQL_prepare(GWBUF *buf)
{
unsigned char *ptr;
if (GWBUF_LENGTH(buf) < 5)
return 0;
ptr = GWBUF_DATA(buf);
return ptr[4] == 0x16 ; // COM_STMT_PREPARE
}
/**
* Extract the SQL portion of a COM_QUERY packet
*
@ -243,7 +260,7 @@ modutil_get_SQL(GWBUF *buf)
unsigned int len, length;
char *ptr, *dptr, *rval = NULL;
if (!modutil_is_SQL(buf))
if (!modutil_is_SQL(buf) && !modutil_is_SQL_prepare(buf))
return rval;
ptr = GWBUF_DATA(buf);
length = *ptr++;

View File

@ -41,6 +41,7 @@
#define PTR_IS_LOCAL_INFILE(b) (b[4] == 0xfb)
extern int modutil_is_SQL(GWBUF *);
extern int modutil_is_SQL_prepare(GWBUF *);
extern int modutil_extract_SQL(GWBUF *, char **, int *);
extern int modutil_MySQL_Query(GWBUF *, char **, int *, int *);
extern char *modutil_get_SQL(GWBUF *);