diff options
author | Dave Beckett <dave@dajobe.org> | 2015-05-02 14:18:53 -0700 |
---|---|---|
committer | Dave Beckett <dave@dajobe.org> | 2015-05-02 14:24:03 -0700 |
commit | 44b8d5f2cae6c4e0e4c5c5207dbbd0098ff3df10 (patch) | |
tree | 69e052900259e9f10fbc289f2b28b0b94b8c76c8 | |
parent | d7ffb40ae33172065dd70a84d2d4fe840a397ffa (diff) | |
download | raptor-44b8d5f2cae6c4e0e4c5c5207dbbd0098ff3df10.tar.gz |
Remove sprintf() and replace with snprintf() or hard-coded format
-rw-r--r-- | librdfa/rdfa.c | 14 | ||||
-rw-r--r-- | librdfa/subject.c | 2 | ||||
-rw-r--r-- | src/turtle_lexer.l | 34 |
3 files changed, 31 insertions, 19 deletions
diff --git a/librdfa/rdfa.c b/librdfa/rdfa.c index 004a5fc9..de8efbe1 100644 --- a/librdfa/rdfa.c +++ b/librdfa/rdfa.c @@ -607,6 +607,7 @@ static void start_element(void *parser_context, const char* name, char* attrns; char* literal_text; size_t value_length = 0; + size_t literal_text_length; attr = attributes[ci]; attrns = (char*)attributes[ci + 1]; @@ -614,10 +615,11 @@ static void start_element(void *parser_context, const char* name, /* append the attribute-value pair to the XML literal */ value = (char*)malloc(value_length + 1); - literal_text = (char*)malloc(strlen(attr) + value_length + 5); snprintf(value, value_length, "%s", attributes[ci + 3]); - sprintf(literal_text, " %s=\"%s\"", attr, value); + literal_text_length = strlen(attr) + value_length + 4; + literal_text = (char*)malloc(literal_text_length + 1); + snprintf(literal_text, literal_text_length, " %s=\"%s\"", attr, value); context->xml_literal = rdfa_n_append_string( context->xml_literal, &context->xml_literal_size, literal_text, strlen(literal_text)); @@ -1022,7 +1024,8 @@ static void end_element(void* parser_context, const char* name, context_stack->items[context_stack->num_items - 1]->data; /* append the text to the current context's XML literal */ - char* buffer = (char*)malloc(strlen(name) + 4); + size_t name_len = strlen(name) + 3; + char* buffer = (char*)malloc(name_len + 1); #if defined(DEBUG) && DEBUG > 0 printf("DEBUG: </%s>\n", name); @@ -1031,7 +1034,10 @@ static void end_element(void* parser_context, const char* name, (print_mapping_value_fp)rdfa_print_triple_list); #endif - sprintf(buffer, "</%s>", name); + buffer[0] = '<'; + memcpy(buffer + 1, name, name_len); + buffer[name_len + 1] = '>'; + buffer[name_len + 2] = '\0'; if(context->xml_literal == NULL) { context->xml_literal = diff --git a/librdfa/subject.c b/librdfa/subject.c index c4d7811b..dec483ea 100644 --- a/librdfa/subject.c +++ b/librdfa/subject.c @@ -43,7 +43,7 @@ char* rdfa_create_bnode(rdfacontext* context) char buffer[64]; /* print and increment the bnode count */ - sprintf(buffer, "_:bnode%i", (int)context->bnode_count++); + snprintf(buffer, 64, "_:bnode%i", (int)context->bnode_count++); rval = rdfa_replace_string(rval, buffer); return rval; diff --git a/src/turtle_lexer.l b/src/turtle_lexer.l index 146373c1..76f2c2f3 100644 --- a/src/turtle_lexer.l +++ b/src/turtle_lexer.l @@ -889,7 +889,8 @@ void turtle_lexer_free(void *ptr, yyscan_t yyscanner) const char * turtle_token_print(raptor_world* world, int token, YYSTYPE *lval) { - static char buffer[2048]; + #define TTP_DEBUG_BUFFER_SIZE 2048 + static char buffer[TTP_DEBUG_BUFFER_SIZE]; if(!token) return "<<EOF>>"; @@ -923,43 +924,48 @@ turtle_token_print(raptor_world* world, int token, YYSTYPE *lval) return "HAT"; case STRING_LITERAL: - sprintf(buffer, "STRING_LITERAL(%s)", lval->string); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "STRING_LITERAL(%s)", + lval->string); return buffer; case URI_LITERAL: - sprintf(buffer, "URI_LITERAL(%s)", - (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : "")); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "URI_LITERAL(%s)", + (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : "")); return buffer; case BLANK_LITERAL: - sprintf(buffer, "BLANK_LITERAL(%s)", lval->string); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "BLANK_LITERAL(%s)", + lval->string); return buffer; case QNAME_LITERAL: - sprintf(buffer, "QNAME_LITERAL(%s)", - (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : "")); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "QNAME_LITERAL(%s)", + (lval->uri ? (char*)raptor_uri_as_string(lval->uri) : "")); return buffer; case INTEGER_LITERAL: - sprintf(buffer, "INTEGER_LITERAL(%s)", lval->string); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "INTEGER_LITERAL(%s)", + lval->string); return buffer; case FLOATING_LITERAL: - sprintf(buffer, "FLOATING_LITERAL(%s)", lval->string); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "FLOATING_LITERAL(%s)", + lval->string); return buffer; case IDENTIFIER: - sprintf(buffer, "IDENTIFIER(%s)", - (lval->string ? (char*)lval->string : "")); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "IDENTIFIER(%s)", + (lval->string ? (char*)lval->string : "")); return buffer; case LANGTAG: - sprintf(buffer, "LANGTAG(%s)", - (lval->string ? (char*)lval->string : "")); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "LANGTAG(%s)", + (lval->string ? (char*)lval->string : "")); return buffer; case DECIMAL_LITERAL: - sprintf(buffer, "DECIMAL_LITERAL(%s)", lval->string); + snprintf(buffer, TTP_DEBUG_BUFFER_SIZE, "DECIMAL_LITERAL(%s)", + lval->string); return buffer; case ERROR_TOKEN: |