cos_name will overflow if args->if_name is long, so change the sprintf to
snprintf. For consistency the other uses of sprintf are also removed.

Signed-off-by: Stuart Haslam <[email protected]>
---
 example/classifier/odp_classifier.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/example/classifier/odp_classifier.c 
b/example/classifier/odp_classifier.c
index 685f335..e634c9b 100644
--- a/example/classifier/odp_classifier.c
+++ b/example/classifier/odp_classifier.c
@@ -317,26 +317,28 @@ static void configure_default_queue(odp_pktio_t pktio, 
appl_args_t *args)
        odp_queue_param_t qparam;
        odp_cos_t cos_default;
        char cos_name[ODP_COS_NAME_LEN];
-       char queue_name[ODP_QUEUE_NAME_LEN];
+       const char *queue_name = "DefaultQueue";
        odp_queue_t queue_default;
        global_statistics *stats = args->stats;
-       sprintf(cos_name, "Default%s", args->if_name);
+
+       snprintf(cos_name, sizeof(cos_name), "Default%s", args->if_name);
        cos_default = odp_cos_create(cos_name);
 
        odp_queue_param_init(&qparam);
        qparam.sched.prio = ODP_SCHED_PRIO_DEFAULT;
        qparam.sched.sync = ODP_SCHED_SYNC_NONE;
        qparam.sched.group = ODP_SCHED_GROUP_ALL;
-       sprintf(queue_name, "%s", "DefaultQueue");
        queue_default = odp_queue_create(queue_name,
-                       ODP_QUEUE_TYPE_SCHED, &qparam);
+                                        ODP_QUEUE_TYPE_SCHED, &qparam);
 
        odp_cos_set_queue(cos_default, queue_default);
        odp_pktio_default_cos_set(pktio, cos_default);
        stats[args->policy_count].cos = cos_default;
        /* add default queue to global stats */
        stats[args->policy_count].queue = queue_default;
-       strcpy(stats[args->policy_count].queue_name, "DefaultQueue");
+       snprintf(stats[args->policy_count].queue_name,
+                sizeof(stats[args->policy_count].queue_name),
+                "%s", queue_name);
        odp_atomic_init_u64(&stats[args->policy_count].packet_count, 0);
        args->policy_count++;
 }
@@ -351,7 +353,8 @@ static void configure_cos_queue(odp_pktio_t pktio, 
appl_args_t *args)
 
        for (i = 0; i < args->policy_count; i++) {
                stats = &args->stats[i];
-               sprintf(cos_name, "CoS%s", stats->queue_name);
+               snprintf(cos_name, sizeof(cos_name), "CoS%s",
+                        stats->queue_name);
                stats->cos = odp_cos_create(cos_name);
 
                stats->pmr = odp_pmr_create(stats->rule.term,
@@ -362,7 +365,8 @@ static void configure_cos_queue(odp_pktio_t pktio, 
appl_args_t *args)
                qparam.sched.sync = ODP_SCHED_SYNC_NONE;
                qparam.sched.group = ODP_SCHED_GROUP_ALL;
 
-               sprintf(queue_name, "%s%d", args->stats[i].queue_name, i);
+               snprintf(queue_name, sizeof(queue_name), "%s%d",
+                        args->stats[i].queue_name, i);
                stats->queue = odp_queue_create(queue_name,
                                                 ODP_QUEUE_TYPE_SCHED,
                                                 &qparam);
-- 
2.1.1

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to