that's quite a slow method, much better to upload all per vertex data into a VBO, one array after another, bind the VBO and then use glVertexAttribPointer with an offset into the VBO for each attribute (message me for an example).

Then you only have to pass the bone matricies or positons and Quaternions in as uniforms. Bone ID's, weights, normals, vertices etc etc can all live in the VBO.