On 09/02/15 22:28, Gedare Bloom wrote:
Nit: should the counted string functions be used?

No, the allocation part takes care that we have enough space in the buffer.


On Mon, Feb 9, 2015 at 3:35 PM, Sebastian Huber
<sebastian.hu...@embedded-brains.de> wrote:
---
  cpukit/libfs/src/imfs/imfs_symlink.c | 33 +++++++--------------------------
  1 file changed, 7 insertions(+), 26 deletions(-)

diff --git a/cpukit/libfs/src/imfs/imfs_symlink.c 
b/cpukit/libfs/src/imfs/imfs_symlink.c
index 2ddf99c..0f06446 100644
--- a/cpukit/libfs/src/imfs/imfs_symlink.c
+++ b/cpukit/libfs/src/imfs/imfs_symlink.c
@@ -20,7 +20,6 @@

  #include "imfs.h"

-#include <stdlib.h>
  #include <string.h>

  static const IMFS_node_control IMFS_node_control_sym_link;
@@ -32,33 +31,23 @@ int IMFS_symlink(
    const char *target
  )
  {
-  char         *dup_target;
    IMFS_jnode_t *new_node;

    /*
-   * Duplicate link name
-   */
-  dup_target = strdup(target);
-  if (dup_target == NULL) {
-    rtems_set_errno_and_return_minus_one(ENOMEM);
-  }
-
-  /*
     *  Create a new link node.
     */
    new_node = IMFS_create_node(
      parentloc,
      &IMFS_node_control_sym_link,
-    sizeof( IMFS_sym_link_t ),
+    sizeof( IMFS_sym_link_t ) + strlen( target ) + 1,
      name,
      namelen,
      ( S_IFLNK | ( S_IRWXU | S_IRWXG | S_IRWXO )),
-    dup_target
+    RTEMS_DECONST( char *, target )
    );

-  if (new_node == NULL) {
-    free(dup_target);
-    rtems_set_errno_and_return_minus_one(ENOMEM);
+  if ( new_node == NULL ) {
+    rtems_set_errno_and_return_minus_one( ENOMEM );
    }

    return 0;
@@ -118,23 +107,15 @@ static IMFS_jnode_t *IMFS_node_initialize_sym_link(
  {
    IMFS_sym_link_t *sym_link = (IMFS_sym_link_t *) node;

-  sym_link->name = arg;
+  sym_link->name = (char *) sym_link + sizeof( *sym_link );
+  strcpy( sym_link->name, arg );

    return node;
  }

-static void IMFS_node_destroy_sym_link( IMFS_jnode_t *node )
-{
-  IMFS_sym_link_t *sym_link = (IMFS_sym_link_t *) node;
-
-  free( sym_link->name );
-
-  IMFS_node_destroy_default( node );
-}
-
  static const IMFS_node_control IMFS_node_control_sym_link = {
    .handlers = &IMFS_link_handlers,
    .node_initialize = IMFS_node_initialize_sym_link,
    .node_remove = IMFS_node_remove_default,
-  .node_destroy = IMFS_node_destroy_sym_link
+  .node_destroy = IMFS_node_destroy_default
  };
--
2.1.4

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to